razor 0.5.1 → 0.5.2

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