rail 0.0.5 → 0.0.6
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.
- checksums.yaml +4 -4
- data/.gitignore +3 -2
- data/CHANGELOG.md +8 -3
- data/README.md +13 -10
- data/lib/rail/context.rb +12 -0
- data/lib/rail/pipeline.rb +26 -39
- data/lib/rail/processor/base.rb +22 -0
- data/lib/rail/processor/coffee_script.rb +68 -0
- data/lib/rail/processor/haml.rb +50 -0
- data/lib/rail/processor/sass.rb +29 -0
- data/lib/rail/processor.rb +20 -0
- data/lib/rail/version.rb +1 -1
- data/lib/rail.rb +8 -3
- data/rail.gemspec +1 -1
- data/spec/coffee_spec.rb +12 -1
- data/spec/haml_spec.rb +18 -0
- data/spec/project/app/assets/javascripts/font.coffee +2 -0
- data/spec/project/app/assets/javascripts/parser.js.coffee +2 -0
- data/spec/project/app/helpers/application_helper.rb +5 -0
- data/spec/project/app/views/articles/about.html.haml +1 -0
- data/spec/project/app/views/layouts/application.html.haml +2 -2
- data/spec/project/app/views/layouts/articles.html.haml +6 -0
- data/spec/project/controller.rb +1 -1
- metadata +19 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 43471296d43318f06e1781bfea739eb39bf8da7f
|
4
|
+
data.tar.gz: be098116b23160188c2696295bc7758d8876f1d7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4f0f8b61cfef6396c5a1cc20cf14b04413eff13161ea2bc347b7131cc2ad036432ce5dab6162e93e48cf87b9721af39b7ecee7147810c00b4b2eacdc97bb84c7
|
7
|
+
data.tar.gz: 8143e93f3ec6e07273f04d0ac0854977a67a72373f70bdaa4c2659895b6a3cee2bb933b18079dda6c242855a30e570b11ad6b508df896bafcfe82be61883c323
|
data/.gitignore
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,14 +1,19 @@
|
|
1
|
+
## Rail (develop)
|
2
|
+
|
3
|
+
* Dropped the dependency on Sprockets.
|
4
|
+
* Implemented the rendering of templates inside layouts.
|
5
|
+
|
1
6
|
## Rail 0.0.5 (June 29, 2014)
|
2
7
|
|
3
|
-
* Enforced usage of the pipeline when precompiling assets.
|
8
|
+
* Enforced the usage of the pipeline when precompiling assets.
|
4
9
|
|
5
10
|
## Rail 0.0.4 (June 26, 2014)
|
6
11
|
|
7
|
-
*
|
12
|
+
* Changed the format of README to make YARD happy.
|
8
13
|
|
9
14
|
## Rail 0.0.3 (June 24, 2014)
|
10
15
|
|
11
|
-
*
|
16
|
+
* Set proper response headers when pipelining assets.
|
12
17
|
|
13
18
|
## Rail 0.0.2 (June 21, 2014)
|
14
19
|
|
data/README.md
CHANGED
@@ -1,14 +1,12 @@
|
|
1
1
|
# Rail [](http://badge.fury.io/rb/rail) [](https://gemnasium.com/IvanUkhov/rail) [](https://travis-ci.org/IvanUkhov/rail)
|
2
2
|
|
3
3
|
A light framework for front-end development inspired by
|
4
|
-
[Rails](http://rubyonrails.org/).
|
5
|
-
|
6
|
-
following components out of the box:
|
4
|
+
[Rails](http://rubyonrails.org/). The sole purpose of Rail is to compile
|
5
|
+
assets, and it includes the following components:
|
7
6
|
|
8
7
|
* [CoffeeScript](http://coffeescript.org/) for JavaScript,
|
9
|
-
* [Haml](http://haml.info/) for HTML,
|
10
|
-
* [Sass](http://sass-lang.com/) for CSS
|
11
|
-
* [Uglifier](https://github.com/lautis/uglifier) for compression.
|
8
|
+
* [Haml](http://haml.info/) for HTML, and
|
9
|
+
* [Sass](http://sass-lang.com/) for CSS.
|
12
10
|
|
13
11
|
## Installation
|
14
12
|
|
@@ -17,7 +15,7 @@ First of all, include the gem in your `Gemfile`. Here is an example:
|
|
17
15
|
```ruby
|
18
16
|
source 'https://rubygems.org'
|
19
17
|
|
20
|
-
gem 'rail', '~> 0.0.
|
18
|
+
gem 'rail', '~> 0.0.6'
|
21
19
|
|
22
20
|
# The rest is optional
|
23
21
|
gem 'redcarpet', '~> 3.1.2' # your favorit complement to Haml
|
@@ -75,8 +73,13 @@ Organize your code according to the following convention:
|
|
75
73
|
* `app/helpers` for helper modules, and
|
76
74
|
* `public` for other static content.
|
77
75
|
|
78
|
-
|
79
|
-
rendering the root of your application
|
76
|
+
The templates in `app/views/layouts` have a special purpose. First,
|
77
|
+
`application.html.haml` is used for rendering the root of your application
|
78
|
+
(both `/` and `/index.html`). Second, any template in `layouts` is used as
|
79
|
+
a layout for the templates in the subfolder of `views` that has the same name
|
80
|
+
as the layout. For example, `articles/what-is-the-meaning-of-life.html.haml`
|
81
|
+
will be rendered in the context of `layouts/articles.html.haml` provided
|
82
|
+
that the latter has a placeholder for the former via the `yield` keyword.
|
80
83
|
|
81
84
|
### Configuration
|
82
85
|
|
@@ -124,7 +127,7 @@ delete the precompiled files when you change your code in `app`.
|
|
124
127
|
### Examples
|
125
128
|
|
126
129
|
Additional usage examples can be found
|
127
|
-
[here](https://github.com/IvanUkhov/
|
130
|
+
[here](https://github.com/IvanUkhov/opentype-works),
|
128
131
|
[here](https://github.com/IvanUkhov/photography), and
|
129
132
|
[here](https://github.com/IvanUkhov/liu-profile).
|
130
133
|
|
data/lib/rail/context.rb
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
module Rail
|
2
|
+
class Context
|
3
|
+
def initialize(options = {})
|
4
|
+
(options[:mixins] || []).each { |mixin| extend(mixin) }
|
5
|
+
singleton_class.class_eval do
|
6
|
+
(options[:locals] || {}).each do |name, value|
|
7
|
+
define_method(name) { value }
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
data/lib/rail/pipeline.rb
CHANGED
@@ -9,58 +9,45 @@ module Rail
|
|
9
9
|
end
|
10
10
|
|
11
11
|
def process(request)
|
12
|
-
|
12
|
+
context = Context.new(locals: { request: request }, mixins: helpers)
|
13
13
|
|
14
|
-
|
14
|
+
asset = rewrite(request.path)
|
15
|
+
klass = Processor.find(asset) or raise NotFoundError
|
16
|
+
asset = klass.extensify(asset)
|
17
|
+
filename = find(asset) or raise NotFoundError
|
15
18
|
|
16
|
-
|
17
|
-
|
18
|
-
path = 'layouts/application'
|
19
|
-
end
|
19
|
+
processor = klass.new(self)
|
20
|
+
body = processor.compile(filename, context: context)
|
20
21
|
|
21
|
-
|
22
|
+
headers = { 'Content-Type' => klass.mime_type }
|
22
23
|
|
23
|
-
|
24
|
+
[ 200, headers, Array(body) ]
|
25
|
+
rescue NotFoundError
|
26
|
+
[ 404, {}, [] ]
|
24
27
|
end
|
25
28
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
end
|
31
|
-
|
32
|
-
def build_sprockets
|
33
|
-
environment = Sprockets::Environment.new
|
34
|
-
|
35
|
-
paths.each do |directory|
|
36
|
-
environment.append_path(directory)
|
29
|
+
def find(asset)
|
30
|
+
paths.each do |path|
|
31
|
+
filename = File.join(path, asset)
|
32
|
+
return filename if File.exist?(filename)
|
37
33
|
end
|
34
|
+
nil
|
35
|
+
end
|
38
36
|
|
39
|
-
|
40
|
-
environment.js_compressor = :uglify
|
41
|
-
environment.css_compressor = :scss
|
42
|
-
end
|
43
|
-
|
44
|
-
# TODO: Find a per-instance way to configure HAML.
|
45
|
-
Haml::Options.defaults[:ugly] = compress?
|
46
|
-
|
47
|
-
helpers.each do |helper|
|
48
|
-
environment.context_class.class_eval do
|
49
|
-
include helper
|
50
|
-
end
|
51
|
-
end
|
37
|
+
private
|
52
38
|
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
39
|
+
def rewrite(path)
|
40
|
+
if [ '', 'index.html' ].include?(path)
|
41
|
+
'layouts/application.html'
|
42
|
+
elsif File.extname(path).empty?
|
43
|
+
"#{ path }.html"
|
44
|
+
else
|
45
|
+
path
|
57
46
|
end
|
58
|
-
|
59
|
-
environment
|
60
47
|
end
|
61
48
|
|
62
49
|
def paths
|
63
|
-
(application_paths + gems.map { |
|
50
|
+
@paths ||= (application_paths + gems.map { |gem| gem_paths(gem) }).flatten
|
64
51
|
end
|
65
52
|
|
66
53
|
def application_paths
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Rail
|
2
|
+
module Processor
|
3
|
+
class Base
|
4
|
+
extend Forwardable
|
5
|
+
|
6
|
+
def self.capable?(extension)
|
7
|
+
Array(output_extension).include?(extension)
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.extensify(filename)
|
11
|
+
"#{ filename }.#{ input_extension }"
|
12
|
+
end
|
13
|
+
|
14
|
+
attr_reader :pipeline
|
15
|
+
def_delegator :pipeline, :compress?
|
16
|
+
|
17
|
+
def initialize(pipeline)
|
18
|
+
@pipeline = pipeline
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,68 @@
|
|
1
|
+
module Rail
|
2
|
+
module Processor
|
3
|
+
class CoffeeScript < Base
|
4
|
+
def self.input_extension
|
5
|
+
'coffee'
|
6
|
+
end
|
7
|
+
|
8
|
+
def self.output_extension
|
9
|
+
'js'
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.mime_type
|
13
|
+
'application/javascript'
|
14
|
+
end
|
15
|
+
|
16
|
+
def compile(filename, options = {})
|
17
|
+
code = process(filename, options)
|
18
|
+
code = Uglifier.new.compile(code) if compress?
|
19
|
+
code
|
20
|
+
end
|
21
|
+
|
22
|
+
private
|
23
|
+
|
24
|
+
def process(filename, options = {})
|
25
|
+
output = []
|
26
|
+
|
27
|
+
code = File.read(filename)
|
28
|
+
|
29
|
+
extract_requirements(code).each do |name|
|
30
|
+
requirement_filename = find_requirement(name, filename)
|
31
|
+
raise NotFoundError unless requirement_filename
|
32
|
+
output << compile(requirement_filename, options)
|
33
|
+
end
|
34
|
+
|
35
|
+
output << ::CoffeeScript.compile(code, options)
|
36
|
+
|
37
|
+
output.join
|
38
|
+
end
|
39
|
+
|
40
|
+
def find_requirement(name, referrer)
|
41
|
+
assets = [ name, "#{ name }.coffee", "#{ name }.js.coffee" ]
|
42
|
+
|
43
|
+
if name =~ /^\.\// # relative?
|
44
|
+
path = File.dirname(referrer)
|
45
|
+
assets.each do |asset|
|
46
|
+
filename = File.join(path, asset)
|
47
|
+
return filename if File.exist?(filename)
|
48
|
+
end
|
49
|
+
else
|
50
|
+
assets.each do |asset|
|
51
|
+
filename = pipeline.find(asset)
|
52
|
+
return filename if filename
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
nil
|
57
|
+
end
|
58
|
+
|
59
|
+
def extract_requirements(code)
|
60
|
+
match = /\A(?:\s*(?:\#.*\n?)+)+/.match(code) or return []
|
61
|
+
match[0].split(/\n/).map(&:strip).reject(&:empty?).map do |line|
|
62
|
+
match = /^\s*\#\s*=\s*require\s+(.*)$/.match(line)
|
63
|
+
match ? match[1].strip.gsub(/(^['"])|(['"]$)/, '') : nil
|
64
|
+
end.compact
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
module Rail
|
2
|
+
module Processor
|
3
|
+
class Haml < Base
|
4
|
+
def self.input_extension
|
5
|
+
'haml'
|
6
|
+
end
|
7
|
+
|
8
|
+
def self.output_extension
|
9
|
+
'html'
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.mime_type
|
13
|
+
'text/html'
|
14
|
+
end
|
15
|
+
|
16
|
+
def compile(filename, options = {}, &block)
|
17
|
+
options = {
|
18
|
+
filename: filename,
|
19
|
+
line: 1,
|
20
|
+
ugly: compress?
|
21
|
+
}.merge(options)
|
22
|
+
|
23
|
+
engine = ::Haml::Engine.new(File.read(filename), options)
|
24
|
+
|
25
|
+
layout_filename = find_layout(filename)
|
26
|
+
|
27
|
+
if layout_filename
|
28
|
+
compile(layout_filename, options) do
|
29
|
+
engine.render(options[:context], {}, &block)
|
30
|
+
end
|
31
|
+
else
|
32
|
+
engine.render(options[:context], {}, &block)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
private
|
37
|
+
|
38
|
+
def find_layout(filename)
|
39
|
+
asset = "layouts/#{ filename.split('/')[-2] }"
|
40
|
+
|
41
|
+
[ "#{ asset }.haml", "#{ asset }.html.haml" ].each do |asset|
|
42
|
+
filename = pipeline.find(asset)
|
43
|
+
return filename if filename
|
44
|
+
end
|
45
|
+
|
46
|
+
nil
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module Rail
|
2
|
+
module Processor
|
3
|
+
class Sass < Base
|
4
|
+
def self.input_extension
|
5
|
+
'scss'
|
6
|
+
end
|
7
|
+
|
8
|
+
def self.output_extension
|
9
|
+
'css'
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.mime_type
|
13
|
+
'text/css'
|
14
|
+
end
|
15
|
+
|
16
|
+
def compile(filename, options = {})
|
17
|
+
options = {
|
18
|
+
filename: filename,
|
19
|
+
line: 1,
|
20
|
+
syntax: :scss,
|
21
|
+
style: compress? ? :compressed : :nested
|
22
|
+
}.merge(options)
|
23
|
+
|
24
|
+
engine = ::Sass::Engine.new(File.read(filename), options)
|
25
|
+
engine.render
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require_relative 'processor/base'
|
2
|
+
require_relative 'processor/coffee_script'
|
3
|
+
require_relative 'processor/haml'
|
4
|
+
require_relative 'processor/sass'
|
5
|
+
|
6
|
+
module Rail
|
7
|
+
module Processor
|
8
|
+
def self.processors
|
9
|
+
@processors ||= Processor.constants.map do |name|
|
10
|
+
object = Processor.const_get(name)
|
11
|
+
object.is_a?(Class) && object < Base ? object : nil
|
12
|
+
end.compact
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.find(filename)
|
16
|
+
extension = File.extname(filename).slice(1..-1)
|
17
|
+
processors.find { |processor| processor.capable?(extension) }
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
data/lib/rail/version.rb
CHANGED
data/lib/rail.rb
CHANGED
@@ -2,21 +2,26 @@ require 'ostruct'
|
|
2
2
|
require 'forwardable'
|
3
3
|
|
4
4
|
require 'rack'
|
5
|
+
|
6
|
+
require 'coffee-script'
|
5
7
|
require 'haml'
|
8
|
+
require 'sass'
|
9
|
+
|
6
10
|
require 'uglifier'
|
7
|
-
require 'sprockets'
|
8
11
|
|
9
12
|
require_relative 'rail/application'
|
10
13
|
require_relative 'rail/browser'
|
14
|
+
require_relative 'rail/context'
|
11
15
|
require_relative 'rail/pipeline'
|
16
|
+
require_relative 'rail/processor'
|
12
17
|
require_relative 'rail/request'
|
13
18
|
require_relative 'rail/server'
|
14
19
|
require_relative 'rail/support'
|
15
20
|
require_relative 'rail/version'
|
16
21
|
|
17
|
-
Sprockets.register_engine('.haml', Tilt::HamlTemplate)
|
18
|
-
|
19
22
|
module Rail
|
23
|
+
NotFoundError = Class.new(StandardError)
|
24
|
+
|
20
25
|
def self.env
|
21
26
|
@env ||= build_env
|
22
27
|
end
|
data/rail.gemspec
CHANGED
data/spec/coffee_spec.rb
CHANGED
@@ -10,6 +10,17 @@ describe Rail::Application do
|
|
10
10
|
end
|
11
11
|
body = controller.process('/application.js')
|
12
12
|
assert_equal body.strip, <<-BODY.strip
|
13
|
+
(function() {
|
14
|
+
window.Parser = (function() {
|
15
|
+
function Parser(format) {
|
16
|
+
this.format = format;
|
17
|
+
}
|
18
|
+
|
19
|
+
return Parser;
|
20
|
+
|
21
|
+
})();
|
22
|
+
|
23
|
+
}).call(this);
|
13
24
|
(function() {
|
14
25
|
window.Font = (function() {
|
15
26
|
function Font(name) {
|
@@ -36,7 +47,7 @@ describe Rail::Application do
|
|
36
47
|
end
|
37
48
|
body = controller.process('/application.js')
|
38
49
|
assert_equal body.strip, <<-BODY.strip
|
39
|
-
(function(){window.Font=function(){function n(n){this.name=n}return n}()}
|
50
|
+
(function(){window.Parser=function(){function n(n){this.format=n}return n}()}).call(this),function(){window.Font=function(){function n(n){this.name=n}return n}()}.call(this),function(){var n;n=new Font(\"Benton Modern Display\")}.call(this);
|
40
51
|
BODY
|
41
52
|
end
|
42
53
|
end
|
data/spec/haml_spec.rb
CHANGED
@@ -36,6 +36,24 @@ describe Rail::Application do
|
|
36
36
|
<body>
|
37
37
|
<h1>Hello</h1>
|
38
38
|
</body>
|
39
|
+
</html>
|
40
|
+
BODY
|
41
|
+
end
|
42
|
+
|
43
|
+
it 'handles layouts' do
|
44
|
+
controller = Controller.new do
|
45
|
+
config.compress = false
|
46
|
+
end
|
47
|
+
body = controller.process('/articles/about')
|
48
|
+
assert_equal body.strip, <<-BODY.strip
|
49
|
+
<!DOCTYPE html>
|
50
|
+
<html>
|
51
|
+
<head>
|
52
|
+
<title>Hello</title>
|
53
|
+
</head>
|
54
|
+
<body>
|
55
|
+
<h1>About</h1>
|
56
|
+
</body>
|
39
57
|
</html>
|
40
58
|
BODY
|
41
59
|
end
|
@@ -0,0 +1 @@
|
|
1
|
+
%h1 About
|
data/spec/project/controller.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rail
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ivan Ukhov
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-07-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -25,19 +25,19 @@ dependencies:
|
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: rack
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '1.5'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '1.5'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: coffee-script
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -127,7 +127,13 @@ files:
|
|
127
127
|
- lib/rail.rb
|
128
128
|
- lib/rail/application.rb
|
129
129
|
- lib/rail/browser.rb
|
130
|
+
- lib/rail/context.rb
|
130
131
|
- lib/rail/pipeline.rb
|
132
|
+
- lib/rail/processor.rb
|
133
|
+
- lib/rail/processor/base.rb
|
134
|
+
- lib/rail/processor/coffee_script.rb
|
135
|
+
- lib/rail/processor/haml.rb
|
136
|
+
- lib/rail/processor/sass.rb
|
131
137
|
- lib/rail/request.rb
|
132
138
|
- lib/rail/server.rb
|
133
139
|
- lib/rail/support.rb
|
@@ -139,9 +145,13 @@ files:
|
|
139
145
|
- spec/haml_spec.rb
|
140
146
|
- spec/project/app/assets/javascripts/application.js.coffee
|
141
147
|
- spec/project/app/assets/javascripts/font.coffee
|
148
|
+
- spec/project/app/assets/javascripts/parser.js.coffee
|
142
149
|
- spec/project/app/assets/stylesheets/_reset.scss
|
143
150
|
- spec/project/app/assets/stylesheets/application.css.scss
|
151
|
+
- spec/project/app/helpers/application_helper.rb
|
152
|
+
- spec/project/app/views/articles/about.html.haml
|
144
153
|
- spec/project/app/views/layouts/application.html.haml
|
154
|
+
- spec/project/app/views/layouts/articles.html.haml
|
145
155
|
- spec/project/config/application.rb
|
146
156
|
- spec/project/controller.rb
|
147
157
|
- spec/sass_spec.rb
|
@@ -174,9 +184,13 @@ test_files:
|
|
174
184
|
- spec/haml_spec.rb
|
175
185
|
- spec/project/app/assets/javascripts/application.js.coffee
|
176
186
|
- spec/project/app/assets/javascripts/font.coffee
|
187
|
+
- spec/project/app/assets/javascripts/parser.js.coffee
|
177
188
|
- spec/project/app/assets/stylesheets/_reset.scss
|
178
189
|
- spec/project/app/assets/stylesheets/application.css.scss
|
190
|
+
- spec/project/app/helpers/application_helper.rb
|
191
|
+
- spec/project/app/views/articles/about.html.haml
|
179
192
|
- spec/project/app/views/layouts/application.html.haml
|
193
|
+
- spec/project/app/views/layouts/articles.html.haml
|
180
194
|
- spec/project/config/application.rb
|
181
195
|
- spec/project/controller.rb
|
182
196
|
- spec/sass_spec.rb
|