razor 0.4.2 → 0.5

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,12 +1,13 @@
1
1
  require 'version'
2
- require 'rubygems'
3
2
  require 'fileutils'
4
3
 
5
4
  require 'razor/generable'
6
- require 'highline'
5
+
7
6
 
8
7
  module Razor
9
8
 
9
+ Renderer.try_load
10
+
10
11
  class << self
11
12
  attr :get
12
13
  end
@@ -26,10 +27,9 @@ module Razor
26
27
 
27
28
  def self.server(port, src)
28
29
  require 'rack'
29
- port = (port and port.to_i or 9000)
30
+ port = (port and port.to_i or 3300)
30
31
  on_request = lambda do |env|
31
32
  page = Razor.http_request src, env['PATH_INFO']
32
- p page.dest_name rescue nil
33
33
  if page
34
34
  [
35
35
  200,
@@ -0,0 +1,60 @@
1
+ require 'net/ftp'
2
+
3
+ class Net::FTP
4
+
5
+ def directory?(name)
6
+ regexp = /#{name}$/
7
+ line = ls.find { |line| line =~ regexp }
8
+ line or false and line[0] == ?d
9
+ end
10
+
11
+ def entries
12
+ nlst.reject { |e| e =~ /^(\.|\.\.)$/ }
13
+ end
14
+
15
+ alias _chdir chdir
16
+ def chdir(dir)
17
+ wd = (dir =~ /^\.?$/)
18
+ if block_given?
19
+ current = pwd
20
+ wd or _chdir dir
21
+ begin
22
+ yield
23
+ ensure
24
+ wd or _chdir current
25
+ end
26
+ else
27
+ wd or _chdir dir
28
+ end
29
+ end
30
+
31
+ def put_contents(dir)
32
+ Dir[dir+'/*'].each &method(:put_r)
33
+ end
34
+
35
+ def put_r(file)
36
+ filename = File.basename file
37
+ if File.directory? file
38
+ mkdir filename
39
+ chdir(filename) { put_contents file }
40
+ else
41
+ put file, filename
42
+ end
43
+ end
44
+
45
+ def rm_contents(dir)
46
+ chdir(dir) {
47
+ entries.each &method(:rm_r)
48
+ }
49
+ end
50
+
51
+ def rm_r(file)
52
+ if directory? file
53
+ rm_contents file
54
+ rmdir file
55
+ else
56
+ delete file
57
+ end
58
+ end
59
+
60
+ end
@@ -0,0 +1,65 @@
1
+ require 'rake'
2
+ require 'rake/tasklib'
3
+ require 'highline'
4
+ require 'tmpdir'
5
+
6
+ require 'razor'
7
+ require 'razor/rake/ftp'
8
+
9
+ module Razor
10
+
11
+ module Rake
12
+
13
+ module FTP
14
+
15
+ class Push < ::Rake::TaskLib
16
+
17
+ attr_accessor :port
18
+ attr_accessor :dir
19
+ attr_accessor :url_base
20
+
21
+ def initialize(hostname, name='ftp:push')
22
+ @name = name
23
+ @hostname = hostname
24
+ @dir = ''
25
+ @port = nil
26
+ @url_base = ''
27
+ yield self if block_given?
28
+ define_task
29
+ end
30
+
31
+ def define_task
32
+ task(@name) {
33
+ hl = HighLine.new
34
+ host = [@hostname]
35
+ host << @port if @port
36
+ ftp = Net::FTP.new(*host)
37
+ begin
38
+ username = hl.ask("FTP Username : ")
39
+ psswd = hl.ask("Password : ", String) { |q| q.echo = false }
40
+ ftp.login(username, psswd)
41
+ ftp.chdir @dir
42
+ ftp.rm_contents '.'
43
+ Dir.mktmpdir { |tmp|
44
+ Razor.generate(generate_options, '.', tmp)
45
+ ftp.put_contents tmp
46
+ }
47
+ ensure
48
+ ftp.close
49
+ end
50
+ }
51
+ end
52
+
53
+ def generate_options
54
+ {
55
+ :url_base => @url_base
56
+ }
57
+ end
58
+
59
+ end
60
+
61
+ end
62
+
63
+ end
64
+
65
+ end
@@ -1,10 +1,7 @@
1
- require 'bluecloth'
2
- require 'sass'
3
-
4
1
  module Razor
5
2
 
6
3
  class Renderer
7
-
4
+
8
5
  class Getter
9
6
 
10
7
  class << self
@@ -46,7 +43,13 @@ module Razor
46
43
 
47
44
  def from_file(filename)
48
45
  filepath = File.join(@path, filename)
49
- str = (File.read(filepath, :mode=>'rb') rescue nil)
46
+ #str = (File.read(filepath, :mode=>'rb') rescue nil)
47
+ begin
48
+ str = File.open(filepath, 'rb') { |f| f.read }
49
+ rescue
50
+ puts $!
51
+ str = nil
52
+ end
50
53
  ext = File.extname filename
51
54
  renderer = self.class.extensions[ext]
52
55
  renderer ||= Renderer
@@ -61,6 +64,19 @@ module Razor
61
64
  Getter.new(path, proc).renderer
62
65
  end
63
66
 
67
+ def try_load
68
+ constants.each { |constname|
69
+ const = const_get constname
70
+ const.is_a? Class or next
71
+ const.ancestors.include? Renderer or next
72
+ const.respond_to? :load or next
73
+ begin
74
+ const.load
75
+ rescue LoadError
76
+ end
77
+ }
78
+ end
79
+
64
80
  def name_ext(n)
65
81
  name(n)
66
82
  extension(n)
@@ -82,7 +98,7 @@ module Razor
82
98
  end
83
99
 
84
100
  def layout_render(context)
85
- @string.nil? and return context['yield']
101
+ valid? or return context['yield']
86
102
  render(context)
87
103
  end
88
104
 
@@ -91,28 +107,61 @@ module Razor
91
107
  end
92
108
 
93
109
  def render(context)
94
- @string.nil? and return ''
110
+ valid? or return ''
95
111
  Mustache.render(@string, context)
96
112
  end
97
113
 
98
- end
99
-
100
- class BlueRenderer < Renderer
101
-
102
- name_ext 'markdown'
103
-
104
- def render(context)
105
- BlueCloth.new(super(context)).to_html
114
+ class BlueRenderer < Renderer
115
+
116
+ def self.load
117
+ require 'bluecloth'
118
+ name_ext 'markdown'
119
+ name_ext 'md'
120
+ end
121
+
122
+ def render(context)
123
+ BlueCloth.new(super(context)).to_html
124
+ end
125
+
106
126
  end
107
127
 
108
- end
109
-
110
- class ScssRenderer < Renderer
128
+ class RedRenderer < Renderer
129
+
130
+ def self.load
131
+ require 'RedCloth'
132
+ name_ext 'textile'
133
+ end
134
+
135
+ def render(context)
136
+ RedCloth.new(super(context)).to_html
137
+ end
138
+
139
+ end
111
140
 
112
- name_ext 'scss'
141
+ class SassRenderer < Renderer
142
+
143
+ def self.load
144
+ require 'sass'
145
+ name_ext 'sass'
146
+ end
147
+
148
+ def render(context)
149
+ Sass::Engine.new(super(context), :syntax=>:sass ).render
150
+ end
151
+
152
+ end
113
153
 
114
- def render(context)
115
- Sass::Engine.new(super(context), :syntax=>:scss ).render
154
+ class ScssRenderer < Renderer
155
+
156
+ def self.load
157
+ require 'sass'
158
+ name_ext 'scss'
159
+ end
160
+
161
+ def render(context)
162
+ Sass::Engine.new(super(context), :syntax=>:scss ).render
163
+ end
164
+
116
165
  end
117
166
 
118
167
  end
@@ -1,12 +1,9 @@
1
1
  require 'optparse'
2
- require 'highline'
3
2
 
4
3
  require 'razor'
5
4
 
6
5
  module Razor
7
6
 
8
- HL = HighLine.new
9
-
10
7
  class Runner
11
8
 
12
9
  def initialize
@@ -50,22 +47,22 @@ module Razor
50
47
  if respond_to? args[0]
51
48
  send *args
52
49
  else
53
- HL.say "Unknown Command #{args[0]}"
54
- HL.say @options_parser.to_s
50
+ puts "Unknown Command #{args[0]}"
51
+ puts @options_parser
55
52
  end
56
53
  else
57
54
  if @options[:version]
58
- HL.say Razor::Version
55
+ puts Razor::Version
59
56
  else
60
- HL.say @options_parser.to_s
57
+ puts @options_parser
61
58
  end
62
59
  end
63
60
  end
64
61
 
65
62
  def _check_arguments(bool)
66
63
  return if bool
67
- HL.say 'Arguments Error'
68
- HL.say @options_parser.to_s
64
+ puts 'Arguments Error'
65
+ puts @options_parser
69
66
  exit
70
67
  end
71
68
 
@@ -201,4 +201,12 @@ module Razor
201
201
 
202
202
  end
203
203
 
204
+ class Script < Template
205
+
206
+ extension 'js'
207
+
208
+ layout { from_file 'script.js' }
209
+
210
+ end
211
+
204
212
  end
@@ -1,3 +1,3 @@
1
1
  module Razor
2
- Version = '0.4.2'
2
+ Version = '0.5'
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.4.2
4
+ version: '0.5'
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-09 00:00:00.000000000 +01:00
12
+ date: 2011-03-10 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: &20183860 !ruby/object:Gem::Requirement
17
+ requirement: &24114740 !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: *20183860
25
+ version_requirements: *24114740
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: rack
28
- requirement: &20183340 !ruby/object:Gem::Requirement
28
+ requirement: &24114220 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - ! '>='
@@ -33,7 +33,18 @@ dependencies:
33
33
  version: '0'
34
34
  type: :runtime
35
35
  prerelease: false
36
- version_requirements: *20183340
36
+ version_requirements: *24114220
37
+ - !ruby/object:Gem::Dependency
38
+ name: highline
39
+ requirement: &24113740 !ruby/object:Gem::Requirement
40
+ none: false
41
+ requirements:
42
+ - - ! '>='
43
+ - !ruby/object:Gem::Version
44
+ version: '0'
45
+ type: :runtime
46
+ prerelease: false
47
+ version_requirements: *24113740
37
48
  description: ! '''Razor is a static website generator. Describe layouts and pages
38
49
  in ruby. Write them with html and Mustache.
39
50
 
@@ -54,6 +65,8 @@ files:
54
65
  - lib/razor/runner.rb
55
66
  - lib/razor/renderer.rb
56
67
  - lib/razor/template.rb
68
+ - lib/razor/rake/ftp.rb
69
+ - lib/razor/rake/ftp_push.rb
57
70
  - lib/version.rb
58
71
  - bin/razor
59
72
  has_rdoc: true