slight-lang 1.0.1 → 1.0.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -1
- data/LICENSE +22 -22
- data/README.md +223 -1
- data/bin/repl/repl.rb +170 -170
- data/bin/repl/utils.rb +29 -29
- data/bin/slight +2 -2
- data/bin/slsh +2 -2
- data/example/core.rb +29 -29
- data/example/custom_engine.rb +37 -37
- data/example/default_engine.rb +28 -28
- data/example/index.slight.rb +28 -33
- data/example/tilt_example.rb +18 -0
- data/lib/slight/config.rb +39 -38
- data/lib/slight/dsl.rb +169 -161
- data/lib/slight/engine.rb +45 -38
- data/lib/slight/template.rb +38 -28
- data/lib/slight/tilt.rb +26 -0
- data/lib/slight/utils.rb +38 -38
- data/lib/slight.rb +8 -6
- data/slight.gemspec +21 -21
- data/spec/bin_spec.rb +0 -0
- data/spec/dsl_spec.rb +0 -0
- data/spec/engine_spec.rb +0 -0
- metadata +8 -3
data/bin/slsh
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
require_relative 'repl/repl.rb'
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require_relative 'repl/repl.rb'
|
data/example/core.rb
CHANGED
@@ -1,29 +1,29 @@
|
|
1
|
-
$:.unshift File.expand_path('../../lib', __FILE__)
|
2
|
-
require 'slight/dsl'
|
3
|
-
|
4
|
-
module Slight
|
5
|
-
class DSL
|
6
|
-
def run
|
7
|
-
doctype :html
|
8
|
-
html do
|
9
|
-
head do
|
10
|
-
title "Example"
|
11
|
-
use "/css/bootstrap.css"
|
12
|
-
use "/script/jquery.js"
|
13
|
-
use "/script/angular.js"
|
14
|
-
end
|
15
|
-
body do
|
16
|
-
div "panel" do
|
17
|
-
nav "nav nav-pill", id:"NavMenu", css:"color: red" do
|
18
|
-
img! src:"/images/icon1.png"
|
19
|
-
end
|
20
|
-
end
|
21
|
-
br
|
22
|
-
hr
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
Slight::DSL.new(STDOUT).run
|
1
|
+
$:.unshift File.expand_path('../../lib', __FILE__)
|
2
|
+
require 'slight/dsl'
|
3
|
+
|
4
|
+
module Slight
|
5
|
+
class DSL
|
6
|
+
def run
|
7
|
+
doctype :html
|
8
|
+
html do
|
9
|
+
head do
|
10
|
+
title "Example"
|
11
|
+
use "/css/bootstrap.css"
|
12
|
+
use "/script/jquery.js"
|
13
|
+
use "/script/angular.js"
|
14
|
+
end
|
15
|
+
body do
|
16
|
+
div "panel" do
|
17
|
+
nav "nav nav-pill", id:"NavMenu", css:"color: red" do
|
18
|
+
img! src:"/images/icon1.png"
|
19
|
+
end
|
20
|
+
end
|
21
|
+
br
|
22
|
+
hr
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
Slight::DSL.new(STDOUT).run
|
data/example/custom_engine.rb
CHANGED
@@ -1,37 +1,37 @@
|
|
1
|
-
require 'slight/config'
|
2
|
-
require 'slight/engine'
|
3
|
-
|
4
|
-
module Slight
|
5
|
-
class PrettyRender < Filter
|
6
|
-
def self.do(src_data); end
|
7
|
-
end
|
8
|
-
|
9
|
-
class PrettyOutput < Filter
|
10
|
-
end
|
11
|
-
|
12
|
-
conf = Slight::Configuration.new do |c|
|
13
|
-
c.use PrettyRender
|
14
|
-
c.use PrettyOutput, :after
|
15
|
-
#c.set :pretty_html, true
|
16
|
-
end
|
17
|
-
|
18
|
-
custom_engine = Slight::Engine.new(conf)
|
19
|
-
io_out = STDOUT
|
20
|
-
|
21
|
-
at_exit{
|
22
|
-
io_out.close
|
23
|
-
}
|
24
|
-
|
25
|
-
begin
|
26
|
-
raise IOError, "source file was not given." if ARGV.length == 0
|
27
|
-
src_file = ARGV[0]
|
28
|
-
io_out = File.open("#{ARGV[1]}", 'w') if ARGV.size == 2
|
29
|
-
io_out.puts default_engine.render(src_file)
|
30
|
-
rescue Exception => err
|
31
|
-
STDERR.puts err.message
|
32
|
-
STDERR.puts [err.inspect, err.backtrace.join("\n")].join("\n")
|
33
|
-
exit 1
|
34
|
-
end
|
35
|
-
|
36
|
-
exit 0
|
37
|
-
end
|
1
|
+
require 'slight/config'
|
2
|
+
require 'slight/engine'
|
3
|
+
|
4
|
+
module Slight
|
5
|
+
class PrettyRender < Filter
|
6
|
+
def self.do(src_data); end
|
7
|
+
end
|
8
|
+
|
9
|
+
class PrettyOutput < Filter
|
10
|
+
end
|
11
|
+
|
12
|
+
conf = Slight::Configuration.new do |c|
|
13
|
+
c.use PrettyRender
|
14
|
+
c.use PrettyOutput, :after
|
15
|
+
#c.set :pretty_html, true
|
16
|
+
end
|
17
|
+
|
18
|
+
custom_engine = Slight::Engine.new(conf)
|
19
|
+
io_out = STDOUT
|
20
|
+
|
21
|
+
at_exit{
|
22
|
+
io_out.close
|
23
|
+
}
|
24
|
+
|
25
|
+
begin
|
26
|
+
raise IOError, "source file was not given." if ARGV.length == 0
|
27
|
+
src_file = ARGV[0]
|
28
|
+
io_out = File.open("#{ARGV[1]}", 'w') if ARGV.size == 2
|
29
|
+
io_out.puts default_engine.render(src_file)
|
30
|
+
rescue Exception => err
|
31
|
+
STDERR.puts err.message
|
32
|
+
STDERR.puts [err.inspect, err.backtrace.join("\n")].join("\n")
|
33
|
+
exit 1
|
34
|
+
end
|
35
|
+
|
36
|
+
exit 0
|
37
|
+
end
|
data/example/default_engine.rb
CHANGED
@@ -1,28 +1,28 @@
|
|
1
|
-
$:.unshift File.expand_path('../../lib', __FILE__)
|
2
|
-
require 'slight'
|
3
|
-
|
4
|
-
module Slight
|
5
|
-
default_engine = Slight::Engine.new
|
6
|
-
io_out = STDOUT
|
7
|
-
|
8
|
-
at_exit{
|
9
|
-
io_out.close
|
10
|
-
}
|
11
|
-
|
12
|
-
begin
|
13
|
-
if ARGV[0] == "-v" then
|
14
|
-
io_out.puts VERSION
|
15
|
-
else
|
16
|
-
raise IOError, "source file was not given." if ARGV.length == 0
|
17
|
-
src_file = ARGV[0]
|
18
|
-
io_out = File.open("#{ARGV[1]}", 'w') if ARGV.size == 2
|
19
|
-
io_out.puts default_engine.render(src_file)
|
20
|
-
end
|
21
|
-
rescue Exception => err
|
22
|
-
STDERR.puts err.message
|
23
|
-
#STDERR.puts [err.inspect, err.backtrace.join("\n")].join("\n")
|
24
|
-
exit 1
|
25
|
-
end
|
26
|
-
|
27
|
-
exit 0
|
28
|
-
end
|
1
|
+
$:.unshift File.expand_path('../../lib', __FILE__)
|
2
|
+
require 'slight'
|
3
|
+
|
4
|
+
module Slight
|
5
|
+
default_engine = Slight::Engine.new
|
6
|
+
io_out = STDOUT
|
7
|
+
|
8
|
+
at_exit{
|
9
|
+
io_out.close
|
10
|
+
}
|
11
|
+
|
12
|
+
begin
|
13
|
+
if ARGV[0] == "-v" then
|
14
|
+
io_out.puts VERSION
|
15
|
+
else
|
16
|
+
raise IOError, "source file was not given." if ARGV.length == 0
|
17
|
+
src_file = ARGV[0]
|
18
|
+
io_out = File.open("#{ARGV[1]}", 'w') if ARGV.size == 2
|
19
|
+
io_out.puts default_engine.render(src_file)
|
20
|
+
end
|
21
|
+
rescue Exception => err
|
22
|
+
STDERR.puts err.message
|
23
|
+
#STDERR.puts [err.inspect, err.backtrace.join("\n")].join("\n")
|
24
|
+
exit 1
|
25
|
+
end
|
26
|
+
|
27
|
+
exit 0
|
28
|
+
end
|
data/example/index.slight.rb
CHANGED
@@ -1,33 +1,28 @@
|
|
1
|
-
doctype :html
|
2
|
-
html do
|
3
|
-
head do
|
4
|
-
title "Example"
|
5
|
-
use "resource/css/bootstrap.css"
|
6
|
-
use "resource/script/jquery.js"
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
let a =1;
|
30
|
-
console.log(a);
|
31
|
-
}
|
32
|
-
|
33
|
-
end
|
1
|
+
doctype :html
|
2
|
+
html do
|
3
|
+
head do
|
4
|
+
title "Example"
|
5
|
+
use "resource/css/bootstrap.css"
|
6
|
+
use "resource/script/jquery.js"
|
7
|
+
end
|
8
|
+
body do
|
9
|
+
div "panel" do
|
10
|
+
nav "nav nav-pill", id:"NavMenu", css:"color: red" do
|
11
|
+
img! src:"resource/images/icon1.png"
|
12
|
+
end
|
13
|
+
end
|
14
|
+
div css:'border 1 bold blue' do
|
15
|
+
layout_yield("#{File.dirname(__FILE__)}/component.slight.rb")
|
16
|
+
end
|
17
|
+
div css:'border 1 bold green' do
|
18
|
+
layout_yield("#{File.dirname(__FILE__)}/component.slight.rb")
|
19
|
+
end
|
20
|
+
br
|
21
|
+
end
|
22
|
+
|
23
|
+
js %{
|
24
|
+
let a =1;
|
25
|
+
console.log(a);
|
26
|
+
}
|
27
|
+
|
28
|
+
end
|
@@ -0,0 +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>
|
data/lib/slight/config.rb
CHANGED
@@ -1,38 +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
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
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
|