Comments (8)
This isn't currently supported, but it would be very easy to add:
import _ from 'lodash'
import theo from 'theo'
theo.registerFormat('scss-with-comments', json => {
return _.map(json.props, prop => {
let name = _.kebabCase(prop.name)
let scss = `$${name}: ${prop.value};`
if (prop.comment) {
scss = `// ${prop.comment}\n${scss}`
}
return scss
}).join('\n')
})
from theo.
Your snippet works great in my case.
Thanks!
from theo.
Yay! the commenting thing might have been something in the old set up — I believe Theo got rewritten at some point so maybe that wasn't built in the second go-round. Sorry about any confusion! Glad to see you using Theo. :)
from theo.
I'm using Theo in one of my project and I really like it! the thing is that I was trying to add comment as mentioned in this issue description with no luck, I believe it was supported by one of theo's old version?
I'm trying to transform from JSON to SCSS and I need to add comments. To be honest I have a nobby question related to the snippet provided by @siiron, where should it be added? should it be part of my gulp task?
from theo.
Hi @abdallahQoraan,
Try adding it within your gulp-file. Then set up a gulp-task that uses the registered format (scss with comments.). My example uses .yml as a tokens-file, but I guess changing the file-type to .json is straight forward within your gulp-task.
/*******************************************************************************
TOKENS TASK
*******************************************************************************/
// Register new format that overrides default format for 'scss'.
// The new format also contains key/ value for 'comment'
theo.registerFormat('scss', function (json) {
return _.map(json.props, function (prop) {
var name = _.kebabCase(prop.name);
var scss = '$' + name + ': ' + prop.value + ';' + '\n';
if (prop.comment) {
scss = '// ' + prop.comment + '\n' + scss;
}
return scss;
}).join('\n');
});
gulp.task('tokens-web', function() {
return gulp.src('path/to/tokens/*.yml')
.pipe(theo.plugins.transform('web'))
.pipe(theo.plugins.format('scss'))
.pipe(rename({
prefix: '_',
extname: '.scss'
}))
.pipe(gulp.dest('path/to/scss/tokens/'));
});
from theo.
Thank you @siiron for your help. Now its working like a charm! I really appreciate it :)
from theo.
@siiron @abdallahQoraan I just added a last minute to Theo v5: comments in most common output formats (SCSS, Sass, stylus, common.js, amd.js). Let me know what you think!
from theo.
@kaelig I've updated my Theo's version to include your latest changes :) It's prefect thank you!
Kudos!
from theo.
Related Issues (20)
- Update package.json? HOT 3
- Support for Typescript HOT 2
- Provide support for Flutter HOT 1
- How to set up multiple conversion targets HOT 1
- Missing helper: "commoncomment"
- Global namespace or prefix (feature request)
- Possible to use math in tokens? HOT 2
- [request] React native support
- How to disable token camelCase in HTML output HOT 5
- Section sort order in HTML output HOT 1
- Z-index `-99999` generates `-999991500`
- Inconsistency in variable names scss <-> stylus <-> less HOT 1
- Nested alias values HOT 3
- Custom Transforms / Value Transforms needs clear documentation
- Missing dependency to "optimist" package HOT 13
- docs: quick start or getting started guide
- make npm package not all merged is released
- Something went wrong: Error: Invalid option "file": must be a path
- CLI missing optimist dependency HOT 4
- Is the this project deprecated? HOT 4
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 theo.