razor 0.5.1 → 0.5.2

Sign up to get free protection for your applications and to get access to all the features.
data/bin/razor CHANGED
@@ -1,7 +1,5 @@
1
1
  #! /usr/bin/env ruby
2
2
 
3
- $:.unshift './lib'
4
-
5
3
  require 'razor/runner'
6
4
 
7
- Razor::Runner.new
5
+ run(ARGV)
@@ -8,10 +8,6 @@ module Razor
8
8
 
9
9
  Renderer.try_load
10
10
 
11
- class << self
12
- attr :get
13
- end
14
-
15
11
  def self.create(name)
16
12
  Dir.mkdir name
17
13
  end
@@ -20,6 +16,7 @@ module Razor
20
16
  if options[:url_base]
21
17
  args << options[:url_base]
22
18
  end
19
+ @src = args[0]
23
20
  site = Site.new(*args)
24
21
  FileUtils.rm_r(dest) rescue nil
25
22
  site.generate
@@ -27,6 +24,7 @@ module Razor
27
24
 
28
25
  def self.server(port, src)
29
26
  require 'rack'
27
+ @src = src
30
28
  port = (port and port.to_i or 3300)
31
29
  on_request = lambda do |env|
32
30
  page = http_request src, env['PATH_INFO']
@@ -51,6 +49,10 @@ module Razor
51
49
  }
52
50
  end
53
51
 
52
+ def self.load(path)
53
+ super File.join(@src, path)
54
+ end
55
+
54
56
  def self.http_request(src, url)
55
57
  url = url[1..-1].sub(/\/+/, '/')
56
58
  site = Site.new(src, '')
@@ -1,6 +1,6 @@
1
1
  require 'fileutils'
2
2
 
3
- require 'razor/template'
3
+ require 'razor/view'
4
4
 
5
5
  module Razor
6
6
 
@@ -65,7 +65,7 @@ module Razor
65
65
  if File.directory? File.join(src,filename)
66
66
  Directory.new(self, filename)
67
67
  elsif filename =~ /^[^~].*\.rb$/
68
- TemplateFile.new(self, filename)
68
+ ViewFile.new(self, filename)
69
69
  else
70
70
  RegularFile.new(self, filename)
71
71
  end
@@ -95,12 +95,15 @@ module Razor
95
95
 
96
96
  attr_reader :src, :dest, :url
97
97
  def initialize(src, dest, url_base='/')
98
- Template.reset_instances!
98
+ View.reset_instances!
99
99
  @src, @dest, @url = src, dest, url_base
100
- layouts = File.join(src, '_layout/')
101
- Template.path = layouts
102
- Template.url_base = url
103
- Dir.chdir(layouts) { load './layouts.rb' }
100
+ View.layouts_path = File.join(src, '_layouts/')
101
+ View.url_base = url
102
+ Razor.load '_init.rb' rescue nil
103
+ rescue LoadError
104
+ $!.message =~ /^no such file to load -- (.+)$/
105
+ puts "Can't load #{$1} file"
106
+ ensure
104
107
  super(nil, nil)
105
108
  end
106
109
 
@@ -119,20 +122,20 @@ module Razor
119
122
  end
120
123
  end
121
124
 
122
- class TemplateFile < GenerableFile
125
+ class ViewFile < GenerableFile
123
126
 
124
127
  def initialize(parent, src_name)
125
128
  super(parent, src_name)
126
- @template = Template.eval(self)
129
+ @view = View.eval(self)
127
130
  end
128
131
 
129
132
  def dest_name
130
- ext = @template.class.get_extension
133
+ ext = @view.class.get_extension
131
134
  src_name.sub(/rb$/, ext)
132
135
  end
133
136
 
134
137
  def contents
135
- @template.render
138
+ @view.render
136
139
  end
137
140
 
138
141
  end
@@ -23,7 +23,7 @@ module Razor
23
23
  @hostname = hostname
24
24
  @dir = ''
25
25
  @port = nil
26
- @url_base = ''
26
+ @url_base = '/'
27
27
  yield self if block_given?
28
28
  define_task
29
29
  end
@@ -62,4 +62,4 @@ module Razor
62
62
 
63
63
  end
64
64
 
65
- end
65
+ end
@@ -36,14 +36,13 @@ module Razor
36
36
  @name = name
37
37
  @template_branch = 'master'
38
38
  @site_branch = 'site'
39
- @url_base = ''
39
+ @url_base = '/'
40
40
  yield self if block_given?
41
41
  define_task
42
42
  end
43
43
 
44
44
  def define_task
45
45
  task(@name, [:message]) { |t, args|
46
- hl = HighLine.new
47
46
  ensure_on_branch template_branch
48
47
  ensure_branch_is_clean # needed ?
49
48
  # .gitinore workaround
@@ -97,7 +96,6 @@ module Razor
97
96
 
98
97
  def ensure_branch_is_clean
99
98
  clean = (`git status` =~ /nothing to commit \(working directory clean\)\n$/ )
100
- p clean
101
99
  clean and return
102
100
  raise CleanBranchError
103
101
  end
@@ -114,4 +112,4 @@ module Razor
114
112
 
115
113
  end
116
114
 
117
- end
115
+ end
@@ -1,83 +1,46 @@
1
- require 'optparse'
1
+ require 'gli'
2
2
 
3
3
  require 'razor'
4
4
 
5
- module Razor
6
-
7
- class Runner
8
-
9
- def initialize
10
- @options = {}
11
-
12
- @options_parser = OptionParser.new { |opt|
13
-
14
- opt.banner = "Usage: razor COMMAND"
15
-
16
- opt.separator ""
17
- opt.separator "Commands :"
18
- opt.separator " generate [OPTIONS] [SOURCE DESTINATION] : Generates the web directory from source."
19
- opt.separator " server [OPTIONS] [SOURCE] : Runs a webrick server which renders page on the fly."
20
- opt.separator ""
21
- opt.separator "Options : "
22
-
23
- opt.on("-u URL-BASE", "--url-base URL-BASE", "Set the local server port") do |url_base|
24
- @options[:url_base] = url_base
25
- end
26
-
27
- opt.on("-p PORT", "--port PORT", "Set the local server port") do |port|
28
- @options[:port] = port
29
- end
30
-
31
- opt.on_tail("-v", "--version", "Show Version") do
32
- @options[:version] = true
33
- end
34
-
35
- opt.on_tail("-h", "--help", "Show this message") do
36
- @options[:help] = true
37
- end
38
-
39
- opt.separator ""
40
-
41
- }
42
- @options_parser.parse!
43
-
44
- unless ARGV.empty?
45
- args = ARGV.clone
46
- ARGV.replace []
47
- if respond_to? args[0]
48
- send *args
49
- else
50
- puts "Unknown Command #{args[0]}"
51
- puts @options_parser
52
- end
53
- else
54
- if @options[:version]
55
- puts Razor::Version
56
- else
57
- puts @options_parser
58
- end
59
- end
60
- end
61
-
62
- def _check_arguments(bool)
63
- return if bool
64
- puts 'Arguments Error'
65
- puts @options_parser
66
- exit
67
- end
68
-
69
- def generate(*args)
70
- _check_arguments args.size < 3
71
- args = ['.', '_site'] if args.empty?
72
- args << File.join(args[0], '_site') if args.size==1
73
- Razor.generate(@options, *args)
74
- end
75
-
76
- def server(url=nil)
77
- url = '.' if url.nil?
78
- Razor.server(@options[:port], url)
79
- end
80
-
81
- end
82
-
5
+ include GLI
6
+
7
+ version Razor::Version
8
+
9
+ desc 'Explains what is being done.'
10
+ switch [:v, :verbose]
11
+
12
+ desc 'Generates website from source to destination. If destination is not given, site is generated in [source]/_site, current directory is the default source.'
13
+ arg_name '[source [destination]]'
14
+ command [:generate] do |c|
15
+
16
+ c.desc 'Sets website url-base.'
17
+ c.arg_name 'URL'
18
+ c.flag [:u, 'url-base']
19
+
20
+ c.action { |gopts, opts, args|
21
+ args = ['.', '_site'] if args.empty?
22
+ args << File.join(args[0], '_site') if args.size==1
23
+ Razor.generate(opts, *args)
24
+ }
25
+
26
+ end
27
+
28
+ desc 'Runs a WEBrick server which renders site on the fly.'
29
+ arg_name '[source]'
30
+ command [:server] do |c|
31
+
32
+ c.desc 'Sets server port.'
33
+ c.arg_name 'PORT'
34
+ c.flag [:p, 'port']
35
+
36
+ c.action { |gopts, opts, args|
37
+ src = args[0] || '.'
38
+ Razor.server(opts[:port], src)
39
+ }
40
+
41
+ end
42
+
43
+ desc 'Print razor version'
44
+ command [:v, :version] do |c|
45
+ c.action { |gopts, opts, args| puts Razor::Version }
83
46
  end
@@ -3,7 +3,7 @@ require 'razor/renderer'
3
3
 
4
4
  module Razor
5
5
 
6
- class Template
6
+ class View
7
7
 
8
8
  class << self
9
9
 
@@ -27,10 +27,10 @@ module Razor
27
27
  @subclasses.each(&:reset_instances!)
28
28
  end
29
29
 
30
- def eval(templatefile)
30
+ def eval(viewfile)
31
31
  @@last_evaluated = nil
32
- @@last_templatefile = templatefile
33
- Kernel.eval(File.read(templatefile.src), TOPLEVEL_BINDING)
32
+ @@last_viewfile = viewfile
33
+ Kernel.eval(File.read(viewfile.src), TOPLEVEL_BINDING)
34
34
  return @@last_evaluated
35
35
  end
36
36
 
@@ -38,8 +38,8 @@ module Razor
38
38
  @extension = ext
39
39
  end
40
40
 
41
- def path=(path)
42
- @@path = path
41
+ def layouts_path=(path)
42
+ @@layouts_path = path
43
43
  end
44
44
 
45
45
  def url_base
@@ -97,7 +97,7 @@ module Razor
97
97
  end
98
98
 
99
99
  def render(context)
100
- renderer = Renderer.get(@@path, @playout)
100
+ renderer = Renderer.get(@@layouts_path, @playout)
101
101
  if superclass.respond_to? :render
102
102
  if renderer.valid?
103
103
  context.push('yield' => renderer.layout_render(context))
@@ -123,7 +123,7 @@ module Razor
123
123
  attr_accessor :contents
124
124
 
125
125
  def initialize(*args, &block)
126
- @templatefile = @@last_templatefile
126
+ @viewfile = @@last_viewfile
127
127
  @contents = lambda { '' }
128
128
  self.class.fields.each { |iv|
129
129
  instance_variable_set(*iv)
@@ -134,7 +134,7 @@ module Razor
134
134
  end
135
135
 
136
136
  def url
137
- @templatefile.url
137
+ @viewfile.url
138
138
  end
139
139
 
140
140
  def url_base
@@ -147,7 +147,7 @@ module Razor
147
147
  end
148
148
 
149
149
  def yield
150
- Renderer.get(@templatefile.parent.src, @contents).render(self)
150
+ Renderer.get(@viewfile.parent.src, @contents).render(self)
151
151
  end
152
152
 
153
153
  def render
@@ -159,33 +159,33 @@ module Razor
159
159
  def self.field(name)
160
160
  class_eval(<<-END)
161
161
  def #{name}(val)
162
- @tpl.#{name} = val
162
+ @view.#{name} = val
163
163
  end
164
164
  END
165
165
  end
166
166
 
167
- def initialize(tpl, &block)
168
- @tpl = tpl
167
+ def initialize(view, &block)
168
+ @view = view
169
169
  instance_exec &block
170
170
  end
171
171
 
172
172
  def field(name, value)
173
- @tpl.field(name, value)
173
+ @view.field(name, value)
174
174
  end
175
175
 
176
176
  def contents(str=nil, &block)
177
- @tpl.contents = str ? lambda { str } : block
177
+ @view.contents = str ? lambda { str } : block
178
178
  end
179
179
 
180
- def template_eval(&block)
181
- @tpl.instance_eval(&block)
180
+ def view_eval(&block)
181
+ @view.instance_eval(&block)
182
182
  end
183
183
 
184
184
  }
185
185
 
186
186
  end
187
187
 
188
- class Page < Template
188
+ class Page < View
189
189
 
190
190
  extension 'html'
191
191
 
@@ -193,7 +193,7 @@ module Razor
193
193
 
194
194
  end
195
195
 
196
- class StyleSheet < Template
196
+ class StyleSheet < View
197
197
 
198
198
  extension 'css'
199
199
 
@@ -201,7 +201,7 @@ module Razor
201
201
 
202
202
  end
203
203
 
204
- class Script < Template
204
+ class Script < View
205
205
 
206
206
  extension 'js'
207
207
 
@@ -1,3 +1,3 @@
1
1
  module Razor
2
- Version = '0.5.1'
2
+ Version = '0.5.2'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: razor
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.1
4
+ version: 0.5.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,12 +9,12 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-03-11 00:00:00.000000000 +01:00
12
+ date: 2011-03-14 00:00:00.000000000 +01:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: mustache
17
- requirement: &21799560 !ruby/object:Gem::Requirement
17
+ requirement: &7949420 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ! '>='
@@ -22,10 +22,10 @@ dependencies:
22
22
  version: '0'
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *21799560
25
+ version_requirements: *7949420
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: rack
28
- requirement: &21799040 !ruby/object:Gem::Requirement
28
+ requirement: &7948800 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - ! '>='
@@ -33,10 +33,10 @@ dependencies:
33
33
  version: '0'
34
34
  type: :runtime
35
35
  prerelease: false
36
- version_requirements: *21799040
36
+ version_requirements: *7948800
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: highline
39
- requirement: &21798560 !ruby/object:Gem::Requirement
39
+ requirement: &7948220 !ruby/object:Gem::Requirement
40
40
  none: false
41
41
  requirements:
42
42
  - - ! '>='
@@ -44,7 +44,18 @@ dependencies:
44
44
  version: '0'
45
45
  type: :runtime
46
46
  prerelease: false
47
- version_requirements: *21798560
47
+ version_requirements: *7948220
48
+ - !ruby/object:Gem::Dependency
49
+ name: gli
50
+ requirement: &7947640 !ruby/object:Gem::Requirement
51
+ none: false
52
+ requirements:
53
+ - - ! '>='
54
+ - !ruby/object:Gem::Version
55
+ version: 1.2.6
56
+ type: :runtime
57
+ prerelease: false
58
+ version_requirements: *7947640
48
59
  description: ! '''Razor is a static website generator. Describe layouts and pages
49
60
  in ruby. Write them with html and Mustache.
50
61
 
@@ -64,14 +75,14 @@ files:
64
75
  - lib/razor/generable.rb
65
76
  - lib/razor/runner.rb
66
77
  - lib/razor/renderer.rb
67
- - lib/razor/template.rb
78
+ - lib/razor/view.rb
68
79
  - lib/razor/rake/ftp.rb
69
80
  - lib/razor/rake/ftp_push.rb
70
81
  - lib/razor/rake/git_generate.rb
71
82
  - lib/version.rb
72
83
  - bin/razor
73
84
  has_rdoc: true
74
- homepage: https://aumgn.fr/razor
85
+ homepage: http://aumgn.fr/razor
75
86
  licenses:
76
87
  - MIT License. See LICENSE file.
77
88
  post_install_message: