slight-lang 1.1.0 → 1.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,18 +1,18 @@
1
- $:.unshift File.expand_path('../../lib', __FILE__)
2
- require 'slight/tilt'
3
-
4
- script = %q{
5
- div "btn btn-succes #{btn_size}" do
6
- @btn_txt
7
- end
8
- }
9
-
10
- @btn_txt = 'Pls,Click-Me.'
11
- body = Proc.new { script }
12
-
13
- template = Tilt.new('tilt_example.rb', 5, {}, &body)
14
- puts template.render(self, :btn_size => "btn-lg")
15
-
16
- # <div class="btn btn-succes btn-lg">
17
- # Pls,Click-Me.
18
- # </div>
1
+ $:.unshift File.expand_path('../../lib', __FILE__)
2
+ require 'slight/tilt'
3
+
4
+ script = %q{
5
+ div "btn btn-succes #{btn_size}" do
6
+ @btn_txt
7
+ end
8
+ }
9
+
10
+ @btn_txt = 'Pls,Click-Me.'
11
+ body = Proc.new { script }
12
+
13
+ template = Tilt.new('tilt_example.rb', 5, {}, &body)
14
+ puts template.render(self, :btn_size => "btn-lg")
15
+
16
+ # <div class="btn btn-succes btn-lg">
17
+ # Pls,Click-Me.
18
+ # </div>
data/lib/slight/config.rb CHANGED
@@ -1,39 +1,39 @@
1
- module Slight
2
- class Configuration
3
- def initialize(options = {}, &blk)
4
- @options = options
5
- @options[:cus] ||= {}
6
- @options[:shortcutA] ||= {}
7
- @options[:shortcutT] ||= {}
8
- @options[:blinding] ||= {}
9
- @options[:before_filter] ||= []
10
- @options[:after_filter] ||= []
11
- blk.call self
12
- @options
13
- end
14
-
15
- def set(k, v); @options[:cus][k] = v; end
16
- def get(k); @options[:cus][k]; end
17
- def setIO(io_out); @options[:io_out] = io_out; end
18
- def use(t, flag = :before)
19
- if flag == :before then
20
- @options[:before_filter].push(t)
21
- else
22
- @options[:after_filter].push(t)
23
- end
24
- end
25
-
26
- def shortcut(type, pattern, replacement)
27
- case(type)
28
- when :A
29
- @options[:shortcutA][pattern.to_sym] = replacement
30
- when :T
31
- @options[:shortcutT][pattern.to_sym] = replacement
32
- end
33
- end
34
-
35
- def blinding(*system_fun)
36
- @options[:blinding] = system_fun.map(&:to_sym)
37
- end
38
- end
39
- end
1
+ module Slight
2
+ class Configuration
3
+ def initialize(options = {}, &blk)
4
+ @options = options
5
+ @options[:cus] ||= {}
6
+ @options[:shortcutA] ||= {}
7
+ @options[:shortcutT] ||= {}
8
+ @options[:blinding] ||= {}
9
+ @options[:before_filter] ||= []
10
+ @options[:after_filter] ||= []
11
+ blk.call self
12
+ @options
13
+ end
14
+
15
+ def set(k, v); @options[:cus][k] = v; end
16
+ def get(k); @options[:cus][k]; end
17
+ def setIO(io_out); @options[:io_out] = io_out; end
18
+ def use(t, flag = :before)
19
+ if flag == :before then
20
+ @options[:before_filter].push(t)
21
+ else
22
+ @options[:after_filter].push(t)
23
+ end
24
+ end
25
+
26
+ def shortcut(type, pattern, replacement)
27
+ case(type)
28
+ when :A
29
+ @options[:shortcutA][pattern.to_sym] = replacement
30
+ when :T
31
+ @options[:shortcutT][pattern.to_sym] = replacement
32
+ end
33
+ end
34
+
35
+ def blinding(*system_fun)
36
+ @options[:blinding] = system_fun.map(&:to_sym)
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,13 @@
1
+ VUEJS_DEV="https://vuejs.org/js/vue.js"
2
+ VUEJS="https://vuejs.org/js/vue.min.js"
3
+ BOOTSTRAPJS="https://bootswatch.com/_vendor/bootstrap/dist/js/bootstrap.min.js"
4
+ BOOTSTRAPJS_DEV="https://bootswatch.com/_vendor/bootstrap/dist/js/bootstrap.js"
5
+ JQUERY="https://bootswatch.com/_vendor/jquery/dist/jquery.min.js"
6
+
7
+ BOOTSTRAP_FLATY="https://bootswatch.com/4/flatly/bootstrap.min.css"
8
+ BOOTSTRAP_UNITED="https://bootswatch.com/4/united/bootstrap.min.css"
9
+ BOOTSTRAP="https://bootswatch.com/_vendor/bootstrap/dist/css/bootstrap.min.css"
10
+ BOOTSTRAP_LUX="https://bootswatch.com/4/lux/bootstrap.min.css"
11
+ BOOTSTRAP_SANDSTONE="https://bootswatch.com/4/sandstone/bootstrap.min.css"
12
+ BOOTSTRAP_SLATE="https://bootswatch.com/4/slate/bootstrap.min.css"
13
+
data/lib/slight/dsl.rb CHANGED
@@ -1,169 +1,168 @@
1
- require 'slight/utils'
2
-
3
- module Slight
4
- module DSLEssential
5
- def br; echo "<br/>\n"; end
6
-
7
- def hr; echo "<hr/>\n"; end
8
-
9
- def title(str); echo "<title>#{str}</title>\n"; end
10
-
11
- def js(str)
12
- echo "<script language=\"javascript\">\n#{str}\n</script>\n"
13
- end
14
-
15
- def doctype(type)
16
- case type
17
- when :html, :h5
18
- echo "<!DOCTYPE html>\n"
19
- when :h11
20
- echo %q[<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">] + "\n"
21
- when :strict
22
- echo %q[<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">] + "\n"
23
- when :frameset
24
- echo %q[<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">] + "\n"
25
- when :mobile
26
- echo %q[<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.2//EN" "http://www.openmobilealliance.org/tech/DTD/xhtml-mobile12.dtd">] + "\n"
27
- when :basic
28
- echo %q[<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.1//EN" "http://www.w3.org/TR/xhtml-basic/xhtml-basic11.dtd">] + "\n"
29
- when :transitional
30
- echo %q[<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">] + "\n"
31
- when :xml
32
- echo %q[<?xml version="1.0" encoding="utf-8" ?>] + "\n"
33
- end
34
-
35
- end
36
-
37
- def use(uri, type=nil)
38
- case type ||= uri.split('.')[-1]
39
- when "js"
40
- echo "<script type=\"text/javascript\" src=\"#{uri}\"></script>\n"
41
- when "css"
42
- echo "<link rel=\"stylesheet\" href=\"#{uri}\"></link>\n"
43
- end
44
-
45
- end
46
-
47
- # load another page into current page
48
- def layout_yield(target_src)
49
- #eval(File.new(target_src).read, binding_scope, target_src, __LINE__ - 48)
50
- @load_history ||= [] # prevernt recursive page load
51
- #unless @load_history[target_src] then
52
- @load_history.push target_src
53
- unless @load_history.count(target_src) == 2
54
- self.instance_eval(File.new(target_src).read, target_src, __LINE__ - 48)
55
- else
56
- echo "<!--recursive page loading deteced, ignore.-->"
57
- end
58
- @load_history.pop
59
- nil
60
- end
61
-
62
- # set the placeholder in current page
63
- #def layout_placeholder(ph_alias="default")
64
- # echo "<!--######|PLACEHOLDER-#{ph_alias}|######-->"
65
- #end
66
-
67
- # attach itself to the placeholder in anther page
68
- #def layout_attach(page, ph_alias="default")
69
- #end
70
-
71
- end
72
-
73
- class DSLException < ScriptError ; end
74
-
75
- class DSL
76
- include DSLEssential
77
- include Utils
78
- undef :p, :select
79
-
80
- def initialize(io)
81
- @output_buffer = io
82
- #@root = page_node.new("root")
83
- end
84
-
85
- def puts(str); @output_buffer << html_escape(str); nil; end
86
-
87
- def echo(str); @output_buffer << str; nil; end
88
-
89
- def method_missing(fun, *param, &block)
90
- __dsl__define(fun)
91
- self.send(fun, *param, &block)
92
- end
93
-
94
- def binding_scope
95
- binding
96
- end
97
-
98
- def resolve_shortcutA(shortcutA)
99
- @__dsl__attr_replacements = shortcutA
100
- end
101
-
102
- def resolve_shortcutT(shortcutT)
103
- @__dsl__tag_replacements = shortcutT
104
- end
105
-
106
- def resolve_blinding(blinding)
107
- blinding.each do |m|
108
- undef_method m
109
- end
110
- end
111
-
112
- def resolve_local(var,val)
113
- self.singleton_class.class_eval do
114
- define_method(var.to_sym){
115
- return val
116
- }
117
- end
118
- end
119
-
120
- private
121
- def __dsl__define(tag)
122
- self.singleton_class.class_eval do
123
- define_method(tag){|*at, &block|
124
- __dsl__packup(tag.to_s, *at, &block)
125
- }
126
- end
127
- end
128
-
129
- def __dsl__packup(tag, *at)
130
- attr_replacements = @__dsl__attr_replacements||{}
131
- tag_replacements = @__dsl__tag_replacements||{}
132
- attrs=[]
133
-
134
- if self_close = tag.end_with?("!") then
135
- tag = tag[0..-2]
136
- end
137
-
138
- at.each do |var|
139
- if var.class == Hash then
140
- var.each_pair do |a, v|
141
- unless a.to_sym == :_ then
142
- at_new = attr_replacements.fetch(a, a)
143
- at_new = v.class == String ? "#{at_new}=\"#{v}\"" : "#{at_new}=#{v.to_s}"
144
- else
145
- at_new = "#{v}"
146
- end
147
- attrs.push at_new
148
- end
149
- elsif var.class == String
150
- attrs.push "class=\"#{var}\""
151
- end
152
- end
153
-
154
- s_tag = tag_replacements.fetch(tag.to_sym, tag)
155
- e_tag = s_tag.split(" ")[0]
156
-
157
- space = attrs.length > 0 ? " " : ""
158
- echo "<#{s_tag}#{space}#{attrs.join(" ")}"
159
- if self_close then
160
- echo "/>\n"
161
- else
162
- echo ">\n"
163
- puts yield.to_s if block_given?
164
- echo "</#{e_tag}>\n"
165
- end
166
-
167
- end
168
- end
169
- end
1
+ require 'slight/utils'
2
+
3
+ module Slight
4
+ module DSLEssential
5
+ def br; echo "<br/>\n"; end
6
+
7
+ def hr; echo "<hr/>\n"; end
8
+
9
+ def title(str); echo "<title>#{str}</title>\n"; end
10
+
11
+ def js(str)
12
+ echo "<script language=\"javascript\">\n#{str}\n</script>\n"
13
+ end
14
+
15
+ def doctype(type)
16
+ case type
17
+ when :html, :h5
18
+ echo "<!DOCTYPE html>\n"
19
+ when :h11
20
+ echo %q[<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">] + "\n"
21
+ when :strict
22
+ echo %q[<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">] + "\n"
23
+ when :frameset
24
+ echo %q[<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">] + "\n"
25
+ when :mobile
26
+ echo %q[<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.2//EN" "http://www.openmobilealliance.org/tech/DTD/xhtml-mobile12.dtd">] + "\n"
27
+ when :basic
28
+ echo %q[<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.1//EN" "http://www.w3.org/TR/xhtml-basic/xhtml-basic11.dtd">] + "\n"
29
+ when :transitional
30
+ echo %q[<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">] + "\n"
31
+ when :xml
32
+ echo %q[<?xml version="1.0" encoding="utf-8" ?>] + "\n"
33
+ end
34
+
35
+ end
36
+
37
+ def use(uri, type=nil)
38
+ case type ||= uri.split('.')[-1]
39
+ when "js",:js
40
+ echo "<script type=\"text/javascript\" src=\"#{uri}\"></script>\n"
41
+ when "css",:css
42
+ echo "<link rel=\"stylesheet\" href=\"#{uri}\"></link>\n"
43
+ end
44
+ end
45
+
46
+ # load another page into current page
47
+ def layout_yield(target_src)
48
+ #eval(File.new(target_src).read, binding_scope, target_src, __LINE__ - 48)
49
+ @load_history ||= [] # prevernt recursive page load
50
+ #unless @load_history[target_src] then
51
+ @load_history.push target_src
52
+ unless @load_history.count(target_src) == 2
53
+ self.instance_eval(File.new(target_src).read, target_src, __LINE__ - 48)
54
+ else
55
+ echo "<!--recursive page loading deteced, ignore.-->"
56
+ end
57
+ @load_history.pop
58
+ nil
59
+ end
60
+
61
+ # set the placeholder in current page
62
+ #def layout_placeholder(ph_alias="default")
63
+ # echo "<!--######|PLACEHOLDER-#{ph_alias}|######-->"
64
+ #end
65
+
66
+ # attach itself to the placeholder in anther page
67
+ #def layout_attach(page, ph_alias="default")
68
+ #end
69
+
70
+ end
71
+
72
+ class DSLException < ScriptError ; end
73
+
74
+ class DSL
75
+ include DSLEssential
76
+ include Utils
77
+ undef :p, :select
78
+
79
+ def initialize(io)
80
+ @output_buffer = io
81
+ #@root = page_node.new("root")
82
+ end
83
+
84
+ def puts(str); @output_buffer << html_escape(str); nil; end
85
+
86
+ def echo(str); @output_buffer << str; nil; end
87
+
88
+ def method_missing(fun, *param, &block)
89
+ __dsl__define(fun)
90
+ self.send(fun, *param, &block)
91
+ end
92
+
93
+ def binding_scope
94
+ binding
95
+ end
96
+
97
+ def resolve_shortcutA(shortcutA)
98
+ @__dsl__attr_replacements = shortcutA
99
+ end
100
+
101
+ def resolve_shortcutT(shortcutT)
102
+ @__dsl__tag_replacements = shortcutT
103
+ end
104
+
105
+ def resolve_blinding(blinding)
106
+ blinding.each do |m|
107
+ undef_method m
108
+ end
109
+ end
110
+
111
+ def resolve_local(var,val)
112
+ self.singleton_class.class_eval do
113
+ define_method(var.to_sym){
114
+ return val
115
+ }
116
+ end
117
+ end
118
+
119
+ private
120
+ def __dsl__define(tag)
121
+ self.singleton_class.class_eval do
122
+ define_method(tag){|*at, &block|
123
+ __dsl__packup(tag.to_s, *at, &block)
124
+ }
125
+ end
126
+ end
127
+
128
+ def __dsl__packup(tag, *at)
129
+ attr_replacements = @__dsl__attr_replacements||{}
130
+ tag_replacements = @__dsl__tag_replacements||{}
131
+ attrs=[]
132
+
133
+ if self_close = tag.end_with?("!") then
134
+ tag = tag[0..-2]
135
+ end
136
+
137
+ at.each do |var|
138
+ if var.class == Hash then
139
+ var.each_pair do |a, v|
140
+ unless a.to_sym == :_ then
141
+ at_new = attr_replacements.fetch(a, a)
142
+ at_new = v.class == String ? "#{at_new}=\"#{v}\"" : "#{at_new}=#{v.to_s}"
143
+ else
144
+ at_new = "#{v}"
145
+ end
146
+ attrs.push at_new
147
+ end
148
+ elsif var.class == String
149
+ attrs.push "class=\"#{var}\""
150
+ end
151
+ end
152
+
153
+ s_tag = tag_replacements.fetch(tag.to_sym, tag)
154
+ e_tag = s_tag.split(" ")[0]
155
+
156
+ space = attrs.length > 0 ? " " : ""
157
+ echo "<#{s_tag}#{space}#{attrs.join(" ")}"
158
+ if self_close then
159
+ echo "/>\n"
160
+ else
161
+ echo ">\n"
162
+ puts yield.to_s if block_given?
163
+ echo "</#{e_tag}>\n"
164
+ end
165
+
166
+ end
167
+ end
168
+ end
data/lib/slight/engine.rb CHANGED
@@ -1,45 +1,45 @@
1
- require 'slight/config'
2
- require 'slight/template'
3
- module Slight
4
- class Filter; def self.do(src_data); return src_data; end; end
5
- class Engine
6
- def initialize(options = {})
7
- @options = options
8
- Configuration.new(@options) do |c|
9
- c.shortcut :A, :css, "style"
10
- c.shortcut :A, :ln, "href"
11
- c.shortcut :A, :url, "href"
12
- c.shortcut :A, :char, "charset"
13
- c.shortcut :A, :fn, "src"
14
- c.shortcut :A, :lang, "language"
15
- c.shortcut :A, :xn, "xmlns"
16
- c.shortcut :A, :mf, "manifest"
17
- c.shortcut :T, "_", "div"
18
- #c.shortcut :T, "js", %q[script language="javascript"]
19
- #c.use PrettyHtmlOutput, :after if c.get(:pretty_html)
20
- end
21
- @template = Template.new(@options)
22
- end
23
-
24
- def render(src_file, src_data = nil, local_vars={})
25
- # src file name is mainly using for identify issues for debugging
26
- # if data not given then read data from src file
27
-
28
- # Data > File
29
-
30
- #src_data = script.call if block_given?
31
- src_data ||= File.new(src_file).read
32
-
33
- @options[:before_filter].each do |f|
34
- src_data = f.do(src_data)
35
- end
36
-
37
- src_data = @template.render(src_data, src_file, local_vars)
38
-
39
- @options[:after_filter].each do |f|
40
- src_data = f.do(src_data)
41
- end
42
- src_data
43
- end
44
- end
45
- end
1
+ require 'slight/config'
2
+ require 'slight/template'
3
+ module Slight
4
+ class Filter; def self.do(src_data); return src_data; end; end
5
+ class Engine
6
+ def initialize(options = {})
7
+ @options = options
8
+ Configuration.new(@options) do |c|
9
+ c.shortcut :A, :css, "style"
10
+ c.shortcut :A, :ln, "href"
11
+ c.shortcut :A, :url, "href"
12
+ c.shortcut :A, :char, "charset"
13
+ c.shortcut :A, :fn, "src"
14
+ c.shortcut :A, :lang, "language"
15
+ c.shortcut :A, :xn, "xmlns"
16
+ c.shortcut :A, :mf, "manifest"
17
+ c.shortcut :T, "_", "div"
18
+ #c.shortcut :T, "js", %q[script language="javascript"]
19
+ #c.use PrettyHtmlOutput, :after if c.get(:pretty_html)
20
+ end
21
+ @template = Template.new(@options)
22
+ end
23
+
24
+ def render(src_file, src_data = nil, local_vars={})
25
+ # src file name is mainly using for identify issues for debugging
26
+ # if data not given then read data from src file
27
+
28
+ # Data > File
29
+
30
+ #src_data = script.call if block_given?
31
+ src_data ||= File.new(src_file).read
32
+
33
+ @options[:before_filter].each do |f|
34
+ src_data = f.do(src_data)
35
+ end
36
+
37
+ src_data = @template.render(src_data, src_file, local_vars)
38
+
39
+ @options[:after_filter].each do |f|
40
+ src_data = f.do(src_data)
41
+ end
42
+ src_data
43
+ end
44
+ end
45
+ end
@@ -1,38 +1,38 @@
1
- require 'slight/dsl'
2
-
3
- module Slight
4
- class Template
5
- def initialize(options = {})
6
- @options = options
7
- @output_buffer = @options[:io_out] || ""
8
- @dsl = DSL.new(@output_buffer)
9
-
10
- @dsl.resolve_shortcutA(@options[:shortcutA])
11
- @dsl.resolve_shortcutT(@options[:shortcutT])
12
- @dsl.resolve_blinding(@options[:blinding])
13
- end
14
-
15
- def render(src_data, src_file, local_vars = {})
16
- @output_buffer.clear
17
-
18
- local_vars.each_pair do |key, value|
19
- if key == :__scope then
20
- scope = value
21
- scope_vars = scope.instance_variables
22
- scope_vars.each do |var|
23
- @dsl.instance_variable_set(var, scope.instance_variable_get(var))
24
- end
25
- else
26
- @dsl.resolve_local(key, value)
27
- end
28
- end
29
-
30
- begin
31
- @dsl.instance_eval(src_data, src_file, __LINE__ - 20)
32
- rescue => ex
33
- raise DSLException.new(ex.message)
34
- end
35
- @output_buffer
36
- end
37
- end
38
- end
1
+ require 'slight/dsl'
2
+
3
+ module Slight
4
+ class Template
5
+ def initialize(options = {})
6
+ @options = options
7
+ @output_buffer = @options[:io_out] || ""
8
+ @dsl = DSL.new(@output_buffer)
9
+
10
+ @dsl.resolve_shortcutA(@options[:shortcutA])
11
+ @dsl.resolve_shortcutT(@options[:shortcutT])
12
+ @dsl.resolve_blinding(@options[:blinding])
13
+ end
14
+
15
+ def render(src_data, src_file, local_vars = {})
16
+ @output_buffer.clear
17
+
18
+ local_vars.each_pair do |key, value|
19
+ if key == :__scope then
20
+ scope = value
21
+ scope_vars = scope.instance_variables
22
+ scope_vars.each do |var|
23
+ @dsl.instance_variable_set(var, scope.instance_variable_get(var))
24
+ end
25
+ else
26
+ @dsl.resolve_local(key, value)
27
+ end
28
+ end
29
+
30
+ begin
31
+ @dsl.instance_eval(src_data, src_file, __LINE__ - 20)
32
+ rescue => ex
33
+ raise DSLException.new(ex.message)
34
+ end
35
+ @output_buffer
36
+ end
37
+ end
38
+ end