sass-tumblr 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +32 -4
- data/lib/sass_tumblr.rb +34 -16
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 948359a7892f1e7936ae432c5e5b63ee02f96b97
|
4
|
+
data.tar.gz: 77fbfac1adb8b075d71b014ddfdb236d4a8eeed1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5de741d2b137ac36729cdbbd1e03b69e537aaf11e2821082a38817729659b2dbfb7a348013328f5431acee671ec6d470e9c243dd0a1befb83d2a3c1461828dea
|
7
|
+
data.tar.gz: aff359448f023512c241e2d159f8f65f32d8c0b8ad5b7cb27fb56e6f035d8fdc659f37abea0b025a464e2023b2133143bbad270a1429b3258cd79a24ab36184c
|
data/README.md
CHANGED
@@ -1,15 +1,43 @@
|
|
1
1
|
sass-tumblr
|
2
2
|
===========
|
3
3
|
|
4
|
-
Ignore [Tumblr template tags](https://www.tumblr.com/docs/en/custom_themes) like ``a { color: {color:Text}; }`` while parsing SCSS.
|
4
|
+
Ignore [Tumblr template tags](https://www.tumblr.com/docs/en/custom_themes) like ``a { color: {color:Text}; }`` while parsing SCSS with [Sass](http://sass-lang.com/) gem.
|
5
|
+
At this moment, old [indent base sass](http://sass-lang.com/documentation/file.INDENTED_SYNTAX.html) is not supported.
|
5
6
|
|
6
7
|
Usage
|
7
8
|
-----
|
8
9
|
|
9
|
-
|
10
|
+
Use [Bundler](http://bundler.io/) and add a dependency to your `Gemfile`.
|
10
11
|
|
11
|
-
gem "sass-tumblr"
|
12
|
+
$ gem "sass-tumblr"
|
12
13
|
|
13
14
|
Then require ``sass_tumblr`` in appropriate way.
|
14
15
|
|
15
|
-
require
|
16
|
+
require "sass_tumblr"
|
17
|
+
|
18
|
+
|
19
|
+
Example
|
20
|
+
-------
|
21
|
+
|
22
|
+
Parse SCSS with Tumblr template tags using `rib`.
|
23
|
+
|
24
|
+
$ bundle exec irb
|
25
|
+
irb> require "sass_tumblr"
|
26
|
+
irb> puts Sass::Engine.new("body {color: {color:Text}}", :syntax => :scss).render
|
27
|
+
body {
|
28
|
+
color: {color:Text}; }
|
29
|
+
|
30
|
+
Limitations
|
31
|
+
-----------
|
32
|
+
|
33
|
+
At this moment, all Tumblr tags in SCSS must be one of next format.
|
34
|
+
Basically it follows [Tumbler template document](https://www.tumblr.com/docs/en/custom_themes), but not all existing templates are following this rule.
|
35
|
+
|
36
|
+
{CapitalizedTagName}
|
37
|
+
{CustomCSS}
|
38
|
+
{color:Capitalized Key Name}
|
39
|
+
{font:Capitalized Key Name}
|
40
|
+
{text:Capitalized Key Name}
|
41
|
+
{image:Capitalized Key Name}
|
42
|
+
|
43
|
+
Also `{block:KeyName}` and `{/block:KeyName}` may not work.
|
data/lib/sass_tumblr.rb
CHANGED
@@ -4,29 +4,33 @@ module Sass
|
|
4
4
|
module SCSS
|
5
5
|
module RX
|
6
6
|
# Pattern to match Tumblr tag.
|
7
|
-
|
7
|
+
TUMBLR_TAG = /({(?:[A-Z][a-zA-Z0-9\-]*|(color|font|select|text|image):[A-Z][a-zA-Z0-9\-_ ]*)})/
|
8
|
+
# Handle special `{CustomCSS}' tag as a comment,
|
9
|
+
# which can appear independently in CSS.
|
10
|
+
TUMBLR_CUSTOM_CSS_TAG = /{CustomCSS}/i
|
11
|
+
COMMENT = /#{COMMENT.source}|#{TUMBLR_CUSTOM_CSS_TAG}/
|
8
12
|
end
|
9
13
|
|
10
14
|
# See lib/sass/scss/static_parser.rb
|
11
15
|
class StaticParser
|
12
|
-
# Handle Tumblr
|
16
|
+
# Handle Tumblr tags in CSS selector
|
13
17
|
# Used from CssParser directly, from StaticParser and Parser via RuleNode#try_to_parse_non_interpolated_rules.
|
14
18
|
alias :qualified_name_without_tumblr :qualified_name
|
15
19
|
def qualified_name(allow_star_name = false)
|
16
|
-
if
|
17
|
-
return nil,
|
20
|
+
if tag = tok(TUMBLR_TAG)
|
21
|
+
return nil, tag
|
18
22
|
else
|
19
23
|
qualified_name_without_tumblr(allow_star_name)
|
20
24
|
end
|
21
25
|
end
|
22
26
|
|
23
|
-
# Handle Tumblr
|
27
|
+
# Handle Tumblr tags in CSS key
|
24
28
|
# Used from CssParser and StaticParser
|
25
29
|
# This is needed even we've patched in Parser class since it's also overridden in StaticParser.
|
26
30
|
alias :interp_ident_without_tumblr :interp_ident
|
27
31
|
def interp_ident(ident = IDENT)
|
28
|
-
if
|
29
|
-
[
|
32
|
+
if tag = tok(TUMBLR_TAG)
|
33
|
+
[tag]
|
30
34
|
else
|
31
35
|
interp_ident_without_tumblr(ident)
|
32
36
|
end
|
@@ -35,29 +39,43 @@ module Sass
|
|
35
39
|
|
36
40
|
# See lib/sass/scss/parser.rb
|
37
41
|
class Parser
|
38
|
-
# Handle Tumblr
|
42
|
+
# Handle Tumblr tags in CSS selector
|
39
43
|
# Used from StaticParser and Parser.
|
40
44
|
alias :almost_any_value_token_without_tumblr :almost_any_value_token
|
41
45
|
def almost_any_value_token
|
42
|
-
tok(
|
46
|
+
tok(TUMBLR_TAG) || almost_any_value_token_without_tumblr
|
43
47
|
end
|
44
48
|
|
45
|
-
# Handle Tumblr
|
49
|
+
# Handle Tumblr tags in CSS key
|
46
50
|
# Used from StaticParser and Parser.
|
47
51
|
alias :interp_ident_without_tumblr :interp_ident
|
48
52
|
def interp_ident(ident = IDENT)
|
49
|
-
if
|
50
|
-
[
|
53
|
+
if tag = tok(TUMBLR_TAG)
|
54
|
+
[tag]
|
51
55
|
else
|
52
56
|
interp_ident_without_tumblr(ident)
|
53
57
|
end
|
54
58
|
end
|
55
59
|
|
56
|
-
#
|
60
|
+
# Handlt Tumblr custom css tag
|
61
|
+
# Treat the tag as comment and yet visible in compact style.
|
62
|
+
alias :process_comment_without_tumblr :process_comment
|
63
|
+
def process_comment(text, node)
|
64
|
+
case text
|
65
|
+
when TUMBLR_CUSTOM_CSS_TAG
|
66
|
+
comment = Sass::Tree::CommentNode.new([text], :loud)
|
67
|
+
comment.line = @line
|
68
|
+
node << comment
|
69
|
+
else
|
70
|
+
process_comment_without_tumblr(text, node)
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
# Avoid to parse first "{" as a block in declaration for Tumblr tags in CSS value
|
57
75
|
# Used from all parsers.
|
58
76
|
alias :value_without_tumblr! :value!
|
59
77
|
def value!
|
60
|
-
if
|
78
|
+
if tok?(TUMBLR_TAG)
|
61
79
|
sass_script(:parse)
|
62
80
|
else
|
63
81
|
value_without_tumblr!
|
@@ -69,12 +87,12 @@ module Sass
|
|
69
87
|
# See lib/sass/script/lexer.rb
|
70
88
|
module Script
|
71
89
|
class Lexer
|
72
|
-
# Handle Tumblr
|
90
|
+
# Handle Tumblr tags in CSS value
|
73
91
|
# Parse as ident token (like `middle', `top') in the parser.
|
74
92
|
# Used from all parsers.
|
75
93
|
alias :ident_without_tumblr_var :ident
|
76
94
|
def ident
|
77
|
-
if scan(
|
95
|
+
if scan(TUMBLR_TAG)
|
78
96
|
[:ident, @scanner[1]]
|
79
97
|
else
|
80
98
|
ident_without_tumblr_var
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sass-tumblr
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yoshimasa Niwa
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-02-
|
11
|
+
date: 2015-02-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sass
|