razor 0.4.2 → 0.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -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