homeostasis 0.0.6 → 0.0.7

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/README.md CHANGED
@@ -1,8 +1,8 @@
1
1
  Description
2
2
  ===========
3
3
 
4
- Stasis plugin for asset stamping with git revisions, environment branching,
5
- and uri helpers.
4
+ Stasis plugin for asset stamping with git revisions, yaml front-matter,
5
+ environment branching, and uri helpers.
6
6
 
7
7
  Installation
8
8
  ============
@@ -13,13 +13,14 @@ In your controller:
13
13
 
14
14
  require 'rubygems'
15
15
  require 'homeostasis/asset' # for asset stamping
16
+ require 'homeostasis/front' # for yaml front-matter
16
17
  require 'homeostasis/env' # for environment handler
17
18
  require 'homeostasis/path' # for path helpers
18
19
 
19
20
  Each component is optional.
20
21
 
21
- Usage
22
- =====
22
+ Asset Stamping
23
+ ==============
23
24
 
24
25
  By default, assets matching `/\.(jpg|png|gif|css|js)$/i` will be stamped.
25
26
  So if your root directory is like this:
@@ -58,6 +59,9 @@ You can even concat your assets into a single file:
58
59
  %link{:href => asset_path('all.css')}
59
60
  %script{:src => asset_path('all.js')}
60
61
 
62
+ Environment Handler
63
+ ===================
64
+
61
65
  The environment handler just adds a variable:
62
66
 
63
67
  Homeostasis::ENV
@@ -67,6 +71,44 @@ can use this to branch in your view:
67
71
 
68
72
  = Homeostasis::ENV.development? ? 'local.js' : 'production.js'
69
73
 
74
+ YAML Front-matter
75
+ =================
76
+
77
+ This adds YAML front-matter support:
78
+
79
+ #!
80
+ :title: Lorem Ipsum
81
+ :desc: Quick fox over lazy dog.
82
+ %div
83
+ Page continues as normal here
84
+ %h1= front[:title]
85
+ %p= front[:desc]
86
+
87
+ Note the 2-space indentation is required. This works for HTML, Markdown, and
88
+ ERB comments as well:
89
+
90
+ <!--
91
+ :title: Lorem Ipsum
92
+ -->
93
+ Continue as normal
94
+
95
+ You can configure which files to check in `controller.rb`. Here's the default:
96
+
97
+ Homeostasis::Front.matchers = {
98
+ 'erb' => /<%#/,
99
+ 'haml' => /-#/,
100
+ 'html' => /<!--/,
101
+ 'md' => /<!--/
102
+ }
103
+
104
+ Just start the file with YAML inside a comment with 2-space indentation. The
105
+ data will be available from the `front` method in your views and controller.
106
+ There's also a `front_site` helper which contains the data for all pages for
107
+ cross-page access.
108
+
109
+ Path Helper
110
+ ===========
111
+
70
112
  The path helper uses the environment handler. It just adds the view helper
71
113
  `path` which returns differently depending on the environment:
72
114
 
@@ -0,0 +1,64 @@
1
+ require File.join(File.dirname(__FILE__), '..', 'homeostasis')
2
+ require 'yaml'
3
+
4
+ class Homeostasis::Front < Stasis::Plugin
5
+ before_all :before_all
6
+ action_method :front
7
+ action_method :front_site
8
+
9
+ def initialize(stasis)
10
+ @stasis = stasis
11
+ @front_site = {}
12
+ @@matchers = {
13
+ 'erb' => /<%#/,
14
+ 'haml' => /-#/,
15
+ 'html' => /<!--/,
16
+ 'md' => /<!--/
17
+ }
18
+ end
19
+
20
+ def before_all
21
+ @stasis.paths.each do |path|
22
+ next if path !~ /\.(#{@@matchers.keys.join('|')})$/
23
+ contents = File.read(path)
24
+ next if contents !~ @@matchers[File.extname(path)[1..-1]]
25
+
26
+ lines, data, index = contents.split("\n"), "", 1
27
+ while index < lines.size
28
+ break if lines[index] !~ /^ /
29
+ data += lines[index] + "\n"
30
+ index += 1
31
+ end
32
+
33
+ begin
34
+ yaml = YAML.load(data)
35
+ @front_site[front_key(path)] = yaml if yaml.is_a?(Hash)
36
+ rescue Psych::SyntaxError => error
37
+ next
38
+ end
39
+ end
40
+ end
41
+
42
+ def front
43
+ @front_site[front_key(@stasis.path)] || {}
44
+ end
45
+
46
+ def front_site
47
+ @front_site
48
+ end
49
+
50
+ def self.matchers
51
+ @@matchers
52
+ end
53
+
54
+ def self.matchers=(ext)
55
+ @@matchers = ext
56
+ end
57
+
58
+ private
59
+ def front_key(filename)
60
+ filename.sub(Dir.pwd, '')[1..-1].sub(/\.[^.]+$/, '')
61
+ end
62
+ end
63
+
64
+ Stasis.register(Homeostasis::Front)
data/lib/homeostasis.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Homeostasis
2
- VERSION = '0.0.6'
2
+ VERSION = '0.0.7'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: homeostasis
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-06-16 00:00:00.000000000 Z
12
+ date: 2012-07-28 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: Provides asset stamping using git revisions, environments, and a few
15
15
  view helpers.
@@ -22,6 +22,7 @@ files:
22
22
  - LICENSE.md
23
23
  - README.md
24
24
  - lib/homeostasis/env.rb
25
+ - lib/homeostasis/front.rb
25
26
  - lib/homeostasis/path.rb
26
27
  - lib/homeostasis/asset.rb
27
28
  - lib/homeostasis.rb