Coder Social home page Coder Social logo

Comments (8)

aputinski avatar aputinski commented on May 19, 2024 2

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.

siiron avatar siiron commented on May 19, 2024 1

Your snippet works great in my case.

Thanks!

from theo.

jina avatar jina commented on May 19, 2024

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.

 avatar commented on May 19, 2024

Hello @siiron and @jina ,

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.

siiron avatar siiron commented on May 19, 2024

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.

 avatar commented on May 19, 2024

Thank you @siiron for your help. Now its working like a charm! I really appreciate it :)

from theo.

kaelig avatar kaelig commented on May 19, 2024

@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.

 avatar commented on May 19, 2024

@kaelig I've updated my Theo's version to include your latest changes :) It's prefect thank you!
Kudos!

from theo.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.