Comments (4)
The contents of the supplied additional handlebars custom helper file are read into the importer and used as the body of a function using the following code:
let initJsonHelpers = new Function('handlebars', await helperfile.text());
if (initJsonHelpers) initJsonHelpers(handlebars);
The function is then called and the handlebars parameter is provided for the helper file to register it's own helpers. My testing used a file containing the following:
function hb_farling() {
let orig = arguments[0];
orig += ' from Helper';
return orig;
}
handlebars.registerHelper('farling', hb_farling);
from obsidian-import-json.
Thanks @farling42. I love what the helper functions can do and I love the functionality of your plugin!
I have got the helper functions working and have included an example of how I am trying to require the file... but it seems it goes beyond my basic javascript knowledge - because of how electron packages the module I got a bit lost.
Thought I would clarify - but no big issue if it gets complicated i will just use absolute paths to require the file.
console.log(__dirname);
/// Applications/Obsidian.app/Contents/Resources/electron.asar/renderer
const Elements = require('./elements.js');
/*
I can add some of my extra js objects like this (below) *rt_expand_center()*
that can be used in the helper functions etc.. but I was hoping to
use require's to bring them in from a local directory so I can use them like on line 36
but it seems due to the path when the actual function runs
it cannot find the file.
*/
const bodygraph_centers = {
identity: 'G-center',
life_force: 'Sacral',
mind: 'Ajna',
emotion: 'Solar Plexus',
expression: 'Throat',
intuition: 'Spleen',
drive: 'Root',
willpower: 'Heart/Ego',
inspiration: 'Head',
};
const clean_string = (str) => {
return str.toLowerCase().replace(/\s/g, '_');
};
function rt_get_planet_symbol() {
const planet = arguments[0];
const _planet = clean_string(planet);
const element = Elements.planet_symbol[_planet];
let str = `${planet} [${element}]`;
return str;
}
handlebars.registerHelper('get_planet_symbol', rt_get_planet_symbol);
function rt_expand_center() {
const type = arguments[0];
const _type = clean_string(type);
const center = bodygraph_centers[_type];
let str = `center: ${center}`;
str += '\n';
str += `center_type: ${type}`;
return str;
}
handlebars.registerHelper('expand_center', rt_expand_center);
from obsidian-import-json.
You could try using the full path from the root of your vault, such as:
const Elements = require(app.vault.root.path + 'foldername/elements.js');
from obsidian-import-json.
That's perfect!!! It works...! Thanks so much!
from obsidian-import-json.
Related Issues (20)
- Plugin Just Not Doing Anything? HOT 5
- [Feature Enhancement] Ability to set property types during import HOT 5
- Is there a way to import todos in Markdown format? HOT 6
- Valid json with curly braces can cause import to fail HOT 1
- Can't Import json HOT 9
- Importing JSON with apostrophes in obsidian HOT 4
- Problems with importing from json file HOT 4
- JSON-Handlebarjs helper math does not see variables with numeric values as numbers HOT 6
- JSON-Elements with no children (hence, no values) causes failure of import HOT 2
- JSON-Can Templater or QuickAdd inline code be triggered on import? HOT 10
- Expose the Import Folder Path (from the Importer Dialog) for use in templates. HOT 1
- Can you provide an example template? HOT 1
- Prop contains html and template doesnt escape HOT 1
- Feature Request - Retain all previous settings to repeat last import? (JSON/CSV file, Helpers files) HOT 8
- Feature Request: Allow duplicate named files to be created by appending something to file name HOT 11
- Importer says "finished" but nothing happens. HOT 4
- increment files and more flexible file name options HOT 2
- Allow more than one field to be used for the filename HOT 1
- Provide option to have source files stored inside the Vault
- Process helpers on fieldname values from import dialog? HOT 5
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from obsidian-import-json.