piano 0.8.1 → 0.8.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -24,11 +24,11 @@ Other files (images, plain text files, etc) will be loaded from the <tt>server/f
24
24
 
25
25
  == Extending functionality
26
26
 
27
- Piano will try to load a file named <tt>server/folder/.piano</tt>. There you can add functionality, like custom helpers and routes.
27
+ Piano will try to load a file named <tt>server/folder/Pianofile</tt>. There you can add functionality, like custom helpers and routes.
28
28
 
29
- Any route added to the <tt>.piano</tt> file will be parsed before the default routes from Piano, overriding them.
29
+ Any route added to the <tt>Pianofile</tt> will be parsed before the default routes from Piano, overriding them.
30
30
 
31
- ==== Sample <tt>.piano</tt> file
31
+ ==== Sample <tt>Pianofile</tt>
32
32
 
33
33
  This file, for example, will bring back the email masking functionality that was deprecated in version 0.7.6
34
34
 
@@ -106,30 +106,26 @@ Note: you can also add a <tt>server/folder/data/404.yaml</tt> file to keep layer
106
106
  * Port number: Any number passed as an argument to the <tt>piano</tt> command will be used as the port number.
107
107
  * Environment: Any string that does not matches any other argument will be setted as the environment.
108
108
  * <tt>noetags</tt>: Adding <tt>noetags</tt> to the shell command will cause Piano to run without etags.
109
+ * <tt>views:<views_path></tt> Sets the views folder, within server/folder
110
+ * <tt>public:<public_path></tt> Sets the public folder, within server/folder
111
+ == Library Usage as Sinatra Extension
109
112
 
110
- == Library Usage
113
+ Piano is fully usable as a Sinatra Extension. Provide the helpers, <tt>sass("template")</tt>, <tt>coffee("template")</tt>, <tt>try_haml("template")</tt>.
111
114
 
112
- Piano is fully usable as a library. Its main utility is provide the helpers, <tt>sass("template")</tt>, <tt>coffee("template")</tt>, <tt>try_haml("template")</tt>.
115
+ Note: Prior to version 0.8.2, Piano was intended to be used as a subclass of Sinatra::Base, but now it works both as a Sinatra Extension and as a subclass.
116
+ Further moves to keep most functionality as a Sinatra Extension will be done in the future, except in the <tt>piano/routes</tt>.
113
117
 
114
118
  require "piano"
115
119
 
116
- class Piano
120
+ class MyPiano < Sinatra::Base
121
+ helpers Sinatra::Piano
122
+
117
123
  get "/" do
118
124
  "Let's change the default behaviour"
119
125
  end
120
126
  end
121
127
 
122
- Piano.play! # .play! added 4 the lulz; Piano.run! will do the trick aswell
123
-
124
- <tt>Piano</tt> inherits <tt>Sinatra::Base</tt>, so all of <tt>Sinatra::Base</tt> own methods are available. Read the Sinatra documentation (http://www.sinatrarb.com/intro) for further information.
125
-
126
- Tip: put
127
-
128
- Piano.environment = :production
129
-
130
- just before letting it play for play in production environment!
131
-
132
- By setting <tt>Piano.etags = :off</tt>, etags will be disabled.
128
+ MyPiano.run!
133
129
 
134
130
  === Routes
135
131
 
@@ -144,6 +140,18 @@ To load the routes (the ones that match your requests with your haml, sass and c
144
140
  end
145
141
 
146
142
  require "piano/routes"
143
+
144
+ Piano.play! # .play! added 4 the lulz; Piano.run! will do the trick aswell
145
+
146
+ <tt>Piano</tt> inherits <tt>Sinatra::Base</tt>, so all of <tt>Sinatra::Base</tt> own methods are available. Read the Sinatra documentation (http://www.sinatrarb.com/intro) for further information.
147
+
148
+ Tip: put
149
+
150
+ Piano.environment = :production
151
+
152
+ just before letting it play for play in production environment!
153
+
154
+ By setting <tt>Piano.etags = :off</tt>, etags will be disabled.
147
155
 
148
156
  == Candies for the kidz
149
157
 
data/bin/piano CHANGED
@@ -59,7 +59,12 @@ def make_sample
59
59
  FileUtils.cp_r "#{source_dir}/sample", this_dir
60
60
  end
61
61
 
62
- if File.exists?(File.expand_path(Dir.pwd) + "/.piano")
62
+ if File.exists?(File.expand_path(Dir.pwd) + "/Pianofile")
63
+ piano_file = File.expand_path(Dir.pwd) + "/Pianofile"
64
+ puts "Pianofile found, loading..."
65
+ load piano_file
66
+ end
67
+ if File.exists?(File.expand_path(Dir.pwd) + "/.piano") # Deprecate soon
63
68
  load File.expand_path(Dir.pwd) + "/.piano"
64
69
  end
65
70
 
@@ -11,36 +11,13 @@ rescue Exception => error
11
11
  Process.exit!
12
12
  end
13
13
 
14
- class Piano < Sinatra::Base
15
-
16
- class AllButPattern
17
- Match = Struct.new(:captures)
18
-
19
- def initialize(except)
20
- @except = except
21
- @captures = Match.new([])
22
- end
23
-
24
- def match(str)
25
- @captures unless @except === str
26
- end
27
- end
28
-
29
- def self.all_but(pattern)
30
- AllButPattern.new(pattern)
31
- end
32
-
33
- set :root, File.expand_path(Dir.pwd)
34
- set :views, File.expand_path(Dir.pwd)
35
- set :etags, :on
36
- set :etags?, Proc.new { settings.etags == :on }
37
-
38
- helpers do
14
+ module Sinatra
15
+ module Piano
39
16
  def try_haml(template)
40
17
  file_name = "#{pwd}/#{template}.haml"
41
18
  bad_luck file_name unless File.exists? file_name
42
19
 
43
- if settings.etags?
20
+ if etags?
44
21
  hash = hash_for template, :haml
45
22
  hash += hash_for "data/#{template}", :yaml if File.exists? "#{pwd}/data/#{template}.yaml"
46
23
  etag hash
@@ -52,7 +29,7 @@ class Piano < Sinatra::Base
52
29
  file_name = "#{pwd}/#{template}.sass"
53
30
  bad_luck file_name unless File.exists? file_name
54
31
 
55
- etag hash_for(template, :sass) if settings.etags?
32
+ etag hash_for(template, :sass) if etags?
56
33
  Sass.compile File.read(file_name), :syntax => :sass
57
34
  end
58
35
 
@@ -60,7 +37,7 @@ class Piano < Sinatra::Base
60
37
  file_name = "#{pwd}/#{template}.coffee"
61
38
  bad_luck file_name unless File.exists? file_name
62
39
 
63
- etag hash_for(template, :coffee) if settings.etags?
40
+ etag hash_for(template, :coffee) if etags?
64
41
  CoffeeScript.compile(File.read(file_name))
65
42
  end
66
43
 
@@ -104,8 +81,38 @@ class Piano < Sinatra::Base
104
81
  return text if words.length <= length
105
82
  words[0..(length-1)].join(" ") + "..."
106
83
  end
84
+
85
+ def link(text, length = 5)
86
+ words = text
87
+ .gsub(/<.+?>/, "")
88
+ .gsub(" ", "-")
89
+ .downcase
90
+ .gsub(/[^a-z0-9\-]/, "")
91
+ .split("-")
92
+ words[0..(length-1)].join("-")
93
+ end
94
+
95
+ def etags?
96
+ if settings.respond_to? :etags
97
+ settings.etags == :on
98
+ else
99
+ true
100
+ end
101
+ end
107
102
  end
108
103
 
104
+ helpers Piano
105
+ end
106
+
107
+
108
+
109
+ class Piano < Sinatra::Base
110
+ helpers Sinatra::Piano
111
+
112
+ set :root, File.expand_path(Dir.pwd)
113
+ set :views, File.expand_path(Dir.pwd)
114
+ set :etags, :on
115
+
109
116
  def self.play!
110
117
  self.run!
111
118
  end
@@ -14,7 +14,7 @@ class Piano
14
14
  coffee something
15
15
  end
16
16
 
17
- get all_but(%r{/finetuner(:.+)$}) do
17
+ get "/*" do
18
18
  something = request.path[1..(request.path.length-1)]
19
19
  @data = data_for something
20
20
  try_haml something
@@ -1,3 +1,3 @@
1
1
  module Piano
2
- VERSION = "0.8.1"
2
+ VERSION = "0.8.3"
3
3
  end
@@ -8,4 +8,4 @@
8
8
  %p= @data['description']
9
9
  %ul
10
10
  - @data['list'].each do |item|
11
- %li= unicode_entities item
11
+ %li= item
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: piano
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.1
4
+ version: 0.8.3
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-05-29 00:00:00.000000000 -03:00
12
+ date: 2011-06-03 00:00:00.000000000 -03:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: sinatra
17
- requirement: &16340412 !ruby/object:Gem::Requirement
17
+ requirement: &21731508 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ! '>='
@@ -22,10 +22,10 @@ dependencies:
22
22
  version: 1.2.6
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *16340412
25
+ version_requirements: *21731508
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: haml
28
- requirement: &16340112 !ruby/object:Gem::Requirement
28
+ requirement: &21731208 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - ! '>='
@@ -33,10 +33,10 @@ dependencies:
33
33
  version: 3.1.1
34
34
  type: :runtime
35
35
  prerelease: false
36
- version_requirements: *16340112
36
+ version_requirements: *21731208
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: sass
39
- requirement: &16339836 !ruby/object:Gem::Requirement
39
+ requirement: &21730932 !ruby/object:Gem::Requirement
40
40
  none: false
41
41
  requirements:
42
42
  - - ! '>='
@@ -44,10 +44,10 @@ dependencies:
44
44
  version: 3.1.1
45
45
  type: :runtime
46
46
  prerelease: false
47
- version_requirements: *16339836
47
+ version_requirements: *21730932
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: coffee-script
50
- requirement: &16339560 !ruby/object:Gem::Requirement
50
+ requirement: &21730656 !ruby/object:Gem::Requirement
51
51
  none: false
52
52
  requirements:
53
53
  - - ! '>='
@@ -55,7 +55,7 @@ dependencies:
55
55
  version: 2.2.0
56
56
  type: :runtime
57
57
  prerelease: false
58
- version_requirements: *16339560
58
+ version_requirements: *21730656
59
59
  description: Out-of-the-box sinatra server for web site sketching using haml + sass
60
60
  + coffee-script
61
61
  email: