luca 0.9.89 → 0.9.91
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/CHANGELOG +11 -1
- data/Gemfile +5 -2
- data/Gemfile.lock +84 -56
- data/Rakefile +10 -2
- data/app/assets/javascripts/luca/components/application.coffee +82 -89
- data/app/assets/javascripts/luca/components/collection_view.coffee +9 -5
- data/app/assets/javascripts/luca/components/controller.coffee +72 -11
- data/app/assets/javascripts/luca/components/fields/base.coffee +61 -8
- data/app/assets/javascripts/luca/components/fields/button_field.coffee +53 -7
- data/app/assets/javascripts/luca/components/fields/checkbox_array.coffee +12 -7
- data/app/assets/javascripts/luca/components/fields/text_field.coffee +1 -1
- data/app/assets/javascripts/luca/components/form_view.coffee +2 -2
- data/app/assets/javascripts/luca/components/grid_layout_view.coffee +0 -1
- data/app/assets/javascripts/luca/components/page.coffee +1 -0
- data/app/assets/javascripts/luca/components/table_view.coffee +2 -2
- data/app/assets/javascripts/luca/concerns/dom_helpers.coffee +2 -2
- data/app/assets/javascripts/luca/containers/card_view.coffee +84 -54
- data/app/assets/javascripts/luca/containers/container.coffee +126 -46
- data/app/assets/javascripts/luca/containers/modal_view.coffee +9 -9
- data/app/assets/javascripts/luca/containers/page_controller.coffee +25 -0
- data/app/assets/javascripts/luca/containers/panel_toolbar.coffee +1 -1
- data/app/assets/javascripts/luca/containers/viewport.coffee +2 -5
- data/app/assets/javascripts/luca/core/collection.coffee +18 -4
- data/app/assets/javascripts/luca/core/model.coffee +1 -1
- data/app/assets/javascripts/luca/core/panel.coffee +1 -1
- data/app/assets/javascripts/luca/core/view.coffee +26 -7
- data/app/assets/javascripts/luca/development/code_sync_manager.coffee +51 -4
- data/app/assets/javascripts/luca/development/console.coffee +1 -1
- data/app/assets/javascripts/luca/framework.coffee +1 -1
- data/app/assets/javascripts/luca/index.coffee +1 -0
- data/app/assets/javascripts/luca/util/luca.coffee +2 -1
- data/app/assets/stylesheets/luca/components/viewport.scss +0 -4
- data/bin/luca +14 -0
- data/docs/framework.json +1 -1
- data/docs/luca-framework-documentation.js +1 -0
- data/lib/luca/cli/generate.rb +37 -0
- data/lib/luca/cli/server.rb +20 -0
- data/lib/luca/cli/sync.rb +40 -0
- data/lib/luca/cli/watch.rb +16 -0
- data/lib/luca/cli.rb +68 -0
- data/lib/luca/collection/endpoint.rb +1 -0
- data/lib/luca/component_definition.rb +23 -5
- data/lib/luca/luca_application.rb +18 -7
- data/lib/luca/rails/version.rb +1 -1
- data/lib/luca/server.rb +7 -0
- data/lib/luca/stylesheet.rb +2 -3
- data/lib/luca/version.rb +3 -0
- data/lib/luca/watcher.rb +72 -0
- data/lib/luca.rb +8 -1
- data/luca.gemspec +14 -7
- data/site/.bundle/config +2 -0
- data/site/.gitignore +5 -0
- data/site/.rvmrc +1 -0
- data/site/CHANGELOG.md +41 -0
- data/site/DOCS.md +41 -0
- data/site/Gemfile +8 -0
- data/site/Gemfile.lock +134 -0
- data/site/LICENSE.md +19 -0
- data/site/config.rb +84 -0
- data/site/helpers/site_helpers.rb +20 -0
- data/site/html5bp-docs/README.md +38 -0
- data/site/html5bp-docs/contribute.md +104 -0
- data/site/html5bp-docs/crossdomain.md +21 -0
- data/site/html5bp-docs/css.md +135 -0
- data/site/html5bp-docs/extend.md +507 -0
- data/site/html5bp-docs/faq.md +77 -0
- data/site/html5bp-docs/htaccess.md +323 -0
- data/site/html5bp-docs/html.md +170 -0
- data/site/html5bp-docs/js.md +31 -0
- data/site/html5bp-docs/misc.md +25 -0
- data/site/html5bp-docs/usage.md +109 -0
- data/site/readme.md +47 -0
- data/site/source/.htaccess +540 -0
- data/site/source/404.html +157 -0
- data/site/source/app/assets/javascripts/dependencies.js.coffee +6 -0
- data/site/source/app/assets/javascripts/docs/application.coffee +64 -0
- data/site/source/app/assets/javascripts/docs/collections/docs_documentation.coffee +17 -0
- data/site/source/app/assets/javascripts/docs/collections/github_repositories.coffee +7 -0
- data/site/source/app/assets/javascripts/docs/collections/index.coffee +1 -0
- data/site/source/app/assets/javascripts/docs/collections/luca_documentation.coffee +17 -0
- data/site/source/app/assets/javascripts/docs/collections/public_gists.coffee +4 -0
- data/site/source/app/assets/javascripts/docs/config.coffee +5 -0
- data/site/source/app/assets/javascripts/docs/index.coffee +12 -0
- data/site/source/app/assets/javascripts/docs/lib/router.coffee +3 -0
- data/site/source/app/assets/javascripts/docs/lib/util.coffee +0 -0
- data/site/source/app/assets/javascripts/docs/models/component.coffee +99 -0
- data/site/source/app/assets/javascripts/docs/models/github_repository.coffee +3 -0
- data/site/source/app/assets/javascripts/docs/models/index.coffee +1 -0
- data/site/source/app/assets/javascripts/docs/templates/component_documentation.jst.ejs +55 -0
- data/site/source/app/assets/javascripts/docs/templates/examples_browser/overview.jst.ejs +4 -0
- data/site/source/app/assets/javascripts/docs/templates/examples_browser/selector.jst.ejs +11 -0
- data/site/source/app/assets/javascripts/docs/templates/github_repository.jst.ejs +4 -0
- data/site/source/app/assets/javascripts/docs/templates/layouts/main.jst.ejs +4 -0
- data/site/source/app/assets/javascripts/docs/templates/left_navigation.jst.ejs +5 -0
- data/site/source/app/assets/javascripts/docs/templates/pages/getting_started.jst.ejs +78 -0
- data/site/source/app/assets/javascripts/docs/templates/pages/home.jst.ejs +57 -0
- data/site/source/app/assets/javascripts/docs/views/components/code_editor/index.coffee +0 -0
- data/site/source/app/assets/javascripts/docs/views/components/code_editor.coffee +45 -0
- data/site/source/app/assets/javascripts/docs/views/components/component_documentation.coffee +72 -0
- data/site/source/app/assets/javascripts/docs/views/index.coffee +3 -0
- data/site/source/app/assets/javascripts/docs/views/pages/browse_source/details.coffee +37 -0
- data/site/source/app/assets/javascripts/docs/views/pages/browse_source/list.coffee +31 -0
- data/site/source/app/assets/javascripts/docs/views/pages/browse_source.coffee +46 -0
- data/site/source/app/assets/javascripts/docs/views/pages/component_editor.coffee +10 -0
- data/site/source/app/assets/javascripts/docs/views/pages/examples_browser/docs.coffee +12 -0
- data/site/source/app/assets/javascripts/docs/views/pages/examples_browser/source.coffee +13 -0
- data/site/source/app/assets/javascripts/docs/views/pages/examples_browser.coffee +102 -0
- data/site/source/app/assets/javascripts/docs/views/pages/home.coffee +10 -0
- data/site/source/app/assets/javascripts/docs/views/views/api_browser/index.coffee +43 -0
- data/site/source/app/assets/javascripts/docs/views/views/collection_view_examples/grid_layout_view_example.coffee +14 -0
- data/site/source/app/assets/javascripts/docs/views/views/collection_view_examples/table_view_example.coffee +39 -0
- data/site/source/app/assets/javascripts/docs/views/views/form_view_examples/basic_example.coffee +38 -0
- data/site/source/app/assets/javascripts/docs/views/views/form_view_examples/complex_layout.coffee +110 -0
- data/site/source/app/assets/javascripts/docs/views/views/top_navigation.coffee +6 -0
- data/site/source/app/assets/javascripts/docs-docs.js +1 -0
- data/site/source/app/assets/javascripts/luca-docs.js +1 -0
- data/site/source/app/assets/javascripts/luca-framework-documentation.js +1 -0
- data/site/source/app/assets/javascripts/site.js.coffee +4 -0
- data/site/source/app/assets/javascripts/vendor/codemirror.js +4786 -0
- data/site/source/app/assets/javascripts/vendor/coffeescript.js +346 -0
- data/site/source/app/assets/javascripts/vendor/css.js +465 -0
- data/site/source/app/assets/javascripts/vendor/htmlmixed.js +84 -0
- data/site/source/app/assets/javascripts/vendor/javascript.js +422 -0
- data/site/source/app/assets/javascripts/vendor/js-beautify.js +1353 -0
- data/site/source/app/assets/javascripts/vendor/modernizr-2.6.1.min.js +4 -0
- data/site/source/app/assets/javascripts/vendor/vim.js +2511 -0
- data/site/source/app/assets/stylesheets/docs/api-browser.css.scss +5 -0
- data/site/source/app/assets/stylesheets/docs/application.css.scss +35 -0
- data/site/source/app/assets/stylesheets/docs/browse-source.css.scss +5 -0
- data/site/source/app/assets/stylesheets/docs/scrollable-table.css.scss +5 -0
- data/site/source/app/assets/stylesheets/site.css.scss +2 -0
- data/site/source/app/assets/stylesheets/vendor/codemirror.css +240 -0
- data/site/source/app/assets/stylesheets/vendor/prettify-tomorrow-night-bright.css +160 -0
- data/site/source/app/assets/stylesheets/vendor/twilight.css +26 -0
- data/site/source/crossdomain.xml +15 -0
- data/site/source/documentation.html.haml +1 -0
- data/site/source/favicon_base.png +0 -0
- data/site/source/humans.txt +15 -0
- data/site/source/images/background.png +0 -0
- data/site/source/images/middleman.png +0 -0
- data/site/source/index.html.haml +1 -0
- data/site/source/layouts/layout.haml +55 -0
- data/site/source/readme.md +63 -0
- data/site/source/robots.txt +3 -0
- data/spec/javascripts/components/collection_view_spec.coffee +1 -1
- data/spec/javascripts/containers/card_view_spec.coffee +58 -5
- data/spec/javascripts/core/collection_spec.coffee +1 -1
- data/spec/javascripts/core/view_spec.coffee +2 -2
- data/vendor/assets/javascripts/backbone-min.js +37 -33
- data/vendor/assets/javascripts/backbone-query.min.js +1 -1
- data/vendor/assets/javascripts/jquery.js +5 -4
- data/vendor/assets/javascripts/luca-dependencies.min.js +8 -6
- data/vendor/assets/javascripts/luca-development.min.js +1 -1
- data/vendor/assets/javascripts/luca.full.min.js +12 -10
- data/vendor/assets/javascripts/luca.min.js +5 -5
- data/vendor/assets/javascripts/underscore-min.js +1 -5
- data/vendor/assets/javascripts/underscore-string.min.js +1 -1
- data/vendor/assets/stylesheets/luca-components.css +0 -2
- data/vendor/assets/stylesheets/luca-development.css +1 -1
- metadata +215 -39
- data/app/assets/javascripts/luca/components/page_controller.coffee +0 -3
- data/app/assets/javascripts/luca/core/collection_view.coffee +0 -150
- data/site/assets/bootstrap.min.js +0 -7
- data/site/assets/dependencies.js +0 -94
- data/site/assets/glyphicons-halflings-white.png +0 -0
- data/site/assets/glyphicons-halflings.png +0 -0
- data/site/assets/luca-ui-bootstrap.css +0 -1331
- data/site/assets/luca-ui-bootstrap.js +0 -9
- data/site/assets/luca-ui-development-tools.css +0 -234
- data/site/assets/luca-ui-development-tools.js +0 -18561
- data/site/assets/luca-ui-development-tools.min.js +0 -15
- data/site/assets/luca-ui-full.min.js +0 -8
- data/site/assets/luca-ui.min.js +0 -4
- data/site/assets/sandbox.css +0 -62
- data/site/assets/sandbox.js +0 -469
- data/site/docs/application.html +0 -41
- data/site/docs/caching.html +0 -43
- data/site/docs/collection.html +0 -75
- data/site/docs/collection_manager.html +0 -71
- data/site/docs/containers.html +0 -118
- data/site/docs/events.html +0 -153
- data/site/docs/view.html +0 -128
- data/site/img/glyphicons-halflings-white.png +0 -0
- data/site/img/glyphicons-halflings.png +0 -0
- data/site/index.html +0 -20
- data/site/source-map.js +0 -1
@@ -0,0 +1,37 @@
|
|
1
|
+
module Luca
|
2
|
+
module Cli
|
3
|
+
class Generate < Thor
|
4
|
+
namespace :generate
|
5
|
+
|
6
|
+
desc "generate", "generate GENERATOR [options]"
|
7
|
+
|
8
|
+
method_options :name => :string
|
9
|
+
method_option :assets_root, :default => File.join(Dir.pwd(),"app","assets")
|
10
|
+
method_option :root, :default => Dir.pwd()
|
11
|
+
method_option :export_location, :default => Dir.pwd()
|
12
|
+
|
13
|
+
def generate generator
|
14
|
+
if generator == "docs"
|
15
|
+
documentation(options[:name], options)
|
16
|
+
end
|
17
|
+
|
18
|
+
if generator == "application"
|
19
|
+
application(options[:name], options)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
no_tasks do
|
24
|
+
def application application_name, options={}
|
25
|
+
|
26
|
+
end
|
27
|
+
|
28
|
+
def documentation application_name, options={}
|
29
|
+
app = Luca::LucaApplication.new(application_name, options)
|
30
|
+
puts "Exporting application documentation for #{ application_name } to #{ app.export_file_location }..."
|
31
|
+
puts "Found #{ app.component_definitions.length } component definitions"
|
32
|
+
app.export
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module Luca
|
2
|
+
module Cli
|
3
|
+
class Server < Thor
|
4
|
+
namespace :server
|
5
|
+
|
6
|
+
desc "server", "server APPLICATION_NAME [options]"
|
7
|
+
|
8
|
+
method_options :namespace => :string
|
9
|
+
method_option :port, :default => 9292
|
10
|
+
method_option :timeout, :default => 25
|
11
|
+
method_option :channel, :default => "faye"
|
12
|
+
|
13
|
+
def server namespace
|
14
|
+
process = Luca::Server.new(:mount=>"/#{ options[:channel] }",:timeout=>options[:timeout])
|
15
|
+
process.listen(options[:port])
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
module Luca
|
2
|
+
module Cli
|
3
|
+
class Sync < Thor
|
4
|
+
namespace :sync
|
5
|
+
|
6
|
+
method_options :namespace => :string
|
7
|
+
method_option :port, :default => 9292
|
8
|
+
method_option :timeout, :default => 25
|
9
|
+
method_option :channel, :default => "faye"
|
10
|
+
method_option :root, :default => Dir.pwd()
|
11
|
+
|
12
|
+
desc "sync", "sync APPLICATION_NAME [options]"
|
13
|
+
def sync application_name
|
14
|
+
fork do
|
15
|
+
watch(application_name)
|
16
|
+
end
|
17
|
+
|
18
|
+
fork do
|
19
|
+
server(application_name)
|
20
|
+
end
|
21
|
+
|
22
|
+
Process.waitpid
|
23
|
+
end
|
24
|
+
|
25
|
+
no_tasks do
|
26
|
+
def watch application_name
|
27
|
+
puts "Watching application assets for changes..."
|
28
|
+
watcher = Luca::Watcher.new(application_name, options)
|
29
|
+
watcher.start
|
30
|
+
end
|
31
|
+
|
32
|
+
def server application_name
|
33
|
+
puts "Running code sync faye process on channel #{ options[:channel] } port #{ options[:port] }"
|
34
|
+
process = Luca::Server.new(:mount=>"/#{ options[:channel] }",:timeout=>options[:timeout])
|
35
|
+
process.listen(options[:port])
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module Luca
|
2
|
+
module Cli
|
3
|
+
class Watch < Thor
|
4
|
+
namespace :watch
|
5
|
+
|
6
|
+
desc "watch", "watch APPLICATION_NAME [options]"
|
7
|
+
method_options :name => :string
|
8
|
+
method_option :root, :default => Dir.pwd()
|
9
|
+
|
10
|
+
def watch application_name
|
11
|
+
watcher = Luca::Watcher.new(application_name, options)
|
12
|
+
watcher.start
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
data/lib/luca/cli.rb
ADDED
@@ -0,0 +1,68 @@
|
|
1
|
+
require 'thor'
|
2
|
+
require "thor/group"
|
3
|
+
require "pry"
|
4
|
+
|
5
|
+
module Luca
|
6
|
+
module Cli
|
7
|
+
class Base < Thor
|
8
|
+
class << self
|
9
|
+
def start(*args)
|
10
|
+
# Change flag to a module
|
11
|
+
ARGV.unshift("help") if ARGV.delete("--help")
|
12
|
+
|
13
|
+
# Default command is help
|
14
|
+
if ARGV[0] != "help" && (ARGV.length < 1 || ARGV.first.include?("-"))
|
15
|
+
ARGV.unshift("server")
|
16
|
+
end
|
17
|
+
|
18
|
+
super
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
desc "version", "Show version"
|
23
|
+
def version
|
24
|
+
require 'luca/version'
|
25
|
+
say "Luca #{Luca::Version}"
|
26
|
+
end
|
27
|
+
|
28
|
+
def help(meth = nil, subcommand = false)
|
29
|
+
if meth && !self.respond_to?(meth)
|
30
|
+
klass, task = Thor::Util.find_class_and_task_by_namespace("#{meth}:#{meth}")
|
31
|
+
klass.start(["-h", task].compact, :shell => self.shell)
|
32
|
+
else
|
33
|
+
list = []
|
34
|
+
Thor::Util.thor_classes_in(Luca::Cli).each do |klass|
|
35
|
+
list += klass.printable_tasks(false)
|
36
|
+
end
|
37
|
+
list.sort!{ |a,b| a[0] <=> b[0] }
|
38
|
+
|
39
|
+
shell.say "Tasks:"
|
40
|
+
shell.print_table(list, :ident => 2, :truncate => true)
|
41
|
+
shell.say
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def method_missing(meth, *args)
|
46
|
+
meth = meth.to_s
|
47
|
+
|
48
|
+
if self.class.map.has_key?(meth)
|
49
|
+
meth = self.class.map[meth]
|
50
|
+
end
|
51
|
+
|
52
|
+
klass, task = Thor::Util.find_class_and_task_by_namespace("#{meth}:#{meth}")
|
53
|
+
|
54
|
+
if klass.nil?
|
55
|
+
super
|
56
|
+
else
|
57
|
+
args.unshift(task) if task
|
58
|
+
klass.start(args, :shell => self.shell)
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
require "luca/cli/generate"
|
66
|
+
require "luca/cli/watch"
|
67
|
+
require "luca/cli/server"
|
68
|
+
require "luca/cli/sync"
|
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
require 'redcarpet'
|
3
|
+
require 'active_support/core_ext'
|
3
4
|
|
4
5
|
module Luca
|
5
6
|
class ComponentDefinition
|
@@ -7,6 +8,16 @@ module Luca
|
|
7
8
|
|
8
9
|
ARGUMENTS_REGEX = /^\w+\:\s*\((.+)\)/
|
9
10
|
|
11
|
+
class << self
|
12
|
+
attr_accessor :markdown
|
13
|
+
end
|
14
|
+
|
15
|
+
begin
|
16
|
+
self.markdown = Redcarpet::Markdown.new(Redcarpet::Render::HTML, :autolink => true, :space_after_headers => true)
|
17
|
+
rescue Exception => e
|
18
|
+
|
19
|
+
end
|
20
|
+
|
10
21
|
def initialize source
|
11
22
|
@source = source
|
12
23
|
read_source()
|
@@ -31,7 +42,8 @@ module Luca
|
|
31
42
|
base = {
|
32
43
|
source: source,
|
33
44
|
defined_in_file: source,
|
34
|
-
type: "javascript"
|
45
|
+
type: "javascript",
|
46
|
+
starts_on_line: definition_line && definition_line.line_number
|
35
47
|
}
|
36
48
|
|
37
49
|
unless class_name.nil?
|
@@ -74,12 +86,18 @@ module Luca
|
|
74
86
|
memo[property] = {
|
75
87
|
defined_on_line: definition_line.line_number,
|
76
88
|
documentation: documentation_for(property),
|
77
|
-
default:
|
89
|
+
default: default_value_for(property)
|
78
90
|
}
|
79
91
|
memo
|
80
92
|
end
|
81
93
|
end
|
82
94
|
|
95
|
+
def default_value_for property
|
96
|
+
definition = find_definition_of(property).line.strip
|
97
|
+
property, value = definition.split(':')
|
98
|
+
value && value.strip
|
99
|
+
end
|
100
|
+
|
83
101
|
def argument_information_for method
|
84
102
|
information = []
|
85
103
|
definition = find_definition_of(method).line.strip
|
@@ -204,8 +222,8 @@ module Luca
|
|
204
222
|
def header_comments compile=true
|
205
223
|
combined = header_comment_lines.join("")
|
206
224
|
|
207
|
-
if compile
|
208
|
-
|
225
|
+
if compile && self.class.markdown && self.class.markdown.respond_to?(:render)
|
226
|
+
self.class.markdown.render(combined)
|
209
227
|
else
|
210
228
|
combined
|
211
229
|
end
|
@@ -304,7 +322,7 @@ module Luca
|
|
304
322
|
end
|
305
323
|
|
306
324
|
def defines_property?
|
307
|
-
!comment? && !defines_method? && indentation_level == 1 && line.match(/\s*\w+\:.*\w
|
325
|
+
!comment? && !defines_method? && indentation_level == 1 && line.match(/\s*\w+\:.*\w*/)
|
308
326
|
end
|
309
327
|
|
310
328
|
def body?
|
@@ -1,10 +1,12 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'redcarpet'
|
3
|
+
require 'active_support/core_ext'
|
4
|
+
|
1
5
|
module Luca
|
2
6
|
class LucaApplication
|
3
7
|
attr_accessor :application_name,
|
4
8
|
:options
|
5
9
|
|
6
|
-
|
7
|
-
|
8
10
|
# Public: creates an instance of a luca application repository.
|
9
11
|
# generally this will be a single folder inside of your asset pipeline
|
10
12
|
#
|
@@ -18,18 +20,21 @@ module Luca
|
|
18
20
|
def export
|
19
21
|
contents = export_all_component_definitions.to_json
|
20
22
|
File.open(export_file_location, 'w+') do |fh|
|
23
|
+
contents = "window.#{ namespace } = window.#{ namespace } || {}; window.#{ namespace }.documentation = #{ contents };"
|
21
24
|
fh.puts( contents )
|
22
25
|
end
|
23
26
|
contents
|
24
27
|
end
|
25
28
|
|
26
29
|
def export_file_location
|
27
|
-
File.join(Luca.base_path,"
|
30
|
+
loc = options[:export_location] || File.join(Luca.base_path,"site","source", "javascripts")
|
31
|
+
|
32
|
+
File.join(loc, "#{ application_name.downcase }-docs.js")
|
28
33
|
end
|
29
34
|
|
30
35
|
def export_all_component_definitions
|
31
36
|
list = component_definitions.map do |cdef|
|
32
|
-
cdef.as_json rescue nil
|
37
|
+
cdef.as_json(include_contents:true) rescue nil
|
33
38
|
end
|
34
39
|
list.compact
|
35
40
|
end
|
@@ -78,7 +83,7 @@ module Luca
|
|
78
83
|
end
|
79
84
|
|
80
85
|
def namespace
|
81
|
-
return options[:application_name] if options[:
|
86
|
+
return options[:application_name].capitalize if options[:application_name]
|
82
87
|
|
83
88
|
line = initializer_file_contents.lines.to_a.detect do |l|
|
84
89
|
l.match(/Luca.initialize/)
|
@@ -137,6 +142,10 @@ module Luca
|
|
137
142
|
end
|
138
143
|
end
|
139
144
|
|
145
|
+
def assets_root
|
146
|
+
options[:assets_root] || File.join(project_root,"app","assets")
|
147
|
+
end
|
148
|
+
|
140
149
|
protected
|
141
150
|
def template_extensions
|
142
151
|
options[:template_extensions] || ['jst.ejs.haml','mustache']
|
@@ -232,13 +241,15 @@ module Luca
|
|
232
241
|
end
|
233
242
|
|
234
243
|
def stylesheets_root
|
235
|
-
options[:stylesheets_root] || File.join(
|
244
|
+
options[:stylesheets_root] || File.join(assets_root,"stylesheets")
|
236
245
|
end
|
237
246
|
|
238
247
|
def javascripts_root
|
239
|
-
options[:javascripts_root] || File.join(
|
248
|
+
options[:javascripts_root] || File.join(assets_root,"javascripts")
|
240
249
|
end
|
241
250
|
|
251
|
+
|
252
|
+
|
242
253
|
def project_root
|
243
254
|
options[:root] || (::Rails.root rescue Dir.pwd())
|
244
255
|
end
|
data/lib/luca/rails/version.rb
CHANGED
data/lib/luca/server.rb
ADDED
data/lib/luca/stylesheet.rb
CHANGED
@@ -27,9 +27,8 @@ module Luca
|
|
27
27
|
compiled: compiled,
|
28
28
|
source_file_contents: IO.read(source),
|
29
29
|
name: File.basename(source),
|
30
|
-
|
31
|
-
|
32
|
-
id: source.gsub(::Rails.root.to_s, '.').gsub('/','__')
|
30
|
+
path: source,
|
31
|
+
id: source.gsub('/','__')
|
33
32
|
}
|
34
33
|
end
|
35
34
|
end
|
data/lib/luca/version.rb
ADDED
data/lib/luca/watcher.rb
ADDED
@@ -0,0 +1,72 @@
|
|
1
|
+
module Luca
|
2
|
+
class Watcher
|
3
|
+
attr_reader :app,
|
4
|
+
:listener,
|
5
|
+
:notifier
|
6
|
+
|
7
|
+
def initialize(name, options={})
|
8
|
+
@app = Luca::LucaApplication.new(name, options)
|
9
|
+
@notifier = FayeNotifier.new(options[:url] || "//localhost:9292/faye")
|
10
|
+
@listener = Listen.to(app.assets_root)
|
11
|
+
.filter(options[:filter] || /(\.coffee|\.css|\.jst|\.mustache)/)
|
12
|
+
.latency(options[:latency] || 1)
|
13
|
+
.change do |modified, added, removed|
|
14
|
+
notify(modified, added, removed)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def notify modified, added, removed
|
19
|
+
puts "Detected changes in #{ (modified + added).inspect }"
|
20
|
+
begin
|
21
|
+
payload = change_payload_for(modified + added)
|
22
|
+
notifier.publish("/luca-code-sync", payload)
|
23
|
+
rescue e
|
24
|
+
puts "Error publishing payload: #{ $! }"
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def change_payload_for paths
|
29
|
+
paths.inject({}) do |memo, path|
|
30
|
+
file = path.gsub( app.assets_root, '')
|
31
|
+
if file && asset = app.find_asset_wrapper_for(file)
|
32
|
+
memo[path] = asset.to_change_notification
|
33
|
+
end
|
34
|
+
|
35
|
+
memo
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def start
|
40
|
+
puts "Looking for changes in #{ app.application_name }: #{ app.assets_root }"
|
41
|
+
@listener.start
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
|
46
|
+
class Watcher::FayeNotifier
|
47
|
+
attr_reader :client, :url
|
48
|
+
|
49
|
+
def initialize url
|
50
|
+
@url = url
|
51
|
+
end
|
52
|
+
|
53
|
+
def client
|
54
|
+
@client ||= ::Faye::Client.new(url)
|
55
|
+
end
|
56
|
+
|
57
|
+
def shutdown
|
58
|
+
EM.stop
|
59
|
+
end
|
60
|
+
|
61
|
+
def publish channel, message
|
62
|
+
EM.run do
|
63
|
+
client = ::Faye::Client.new(url)
|
64
|
+
pub = client.publish( channel, message )
|
65
|
+
pub.callback { EM.stop }
|
66
|
+
pub.errback { EM.stop }
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
end
|
71
|
+
|
72
|
+
end
|
data/lib/luca.rb
CHANGED
@@ -5,13 +5,20 @@ module Luca
|
|
5
5
|
end
|
6
6
|
end
|
7
7
|
|
8
|
-
require 'luca/
|
8
|
+
require 'luca/version'
|
9
|
+
|
10
|
+
if defined?(::Rails)
|
11
|
+
require 'luca/rails'
|
12
|
+
end
|
13
|
+
|
9
14
|
require 'luca/collection'
|
10
15
|
require 'luca/asset_compiler'
|
11
16
|
require 'luca/compiled_asset'
|
12
17
|
require 'luca/component_definition'
|
13
18
|
require 'luca/luca_application'
|
14
19
|
require 'luca/project'
|
20
|
+
require 'luca/watcher'
|
21
|
+
require 'luca/server'
|
15
22
|
require 'luca/project_harness'
|
16
23
|
require 'luca/stylesheet'
|
17
24
|
require 'luca/template_asset'
|
data/luca.gemspec
CHANGED
@@ -1,28 +1,35 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
-
require File.expand_path('../lib/luca/
|
2
|
+
require File.expand_path('../lib/luca/version', __FILE__)
|
3
3
|
|
4
4
|
Gem::Specification.new do |s|
|
5
5
|
s.name = "luca"
|
6
|
-
s.version = Luca::
|
6
|
+
s.version = Luca::Version
|
7
7
|
s.platform = Gem::Platform::RUBY
|
8
8
|
s.authors = ["Jonathan Soeder"]
|
9
9
|
s.email = ["jonathan.soeder@gmail.com"]
|
10
10
|
s.homepage = "http://datapimp.github.com/luca"
|
11
|
-
s.summary = "
|
12
|
-
s.description = "This gem allows you to use the luca
|
11
|
+
s.summary = "Component framework based on backbone.js and twitter boostrap"
|
12
|
+
s.description = "This gem allows you to use the luca framework easily with the assets pipeline in rails"
|
13
13
|
|
14
14
|
s.required_rubygems_version = ">= 1.3.6"
|
15
15
|
|
16
|
-
s.add_dependency "railties", "
|
16
|
+
s.add_dependency "railties", ">= 3.1"
|
17
17
|
s.add_dependency "thor", "~> 0.14"
|
18
18
|
s.add_dependency "sinatra", ">= 0.9.2"
|
19
19
|
s.add_dependency "ejs"
|
20
20
|
s.add_dependency "hogan_assets"
|
21
|
+
s.add_dependency "redcarpet", "~> 2.2.2"
|
22
|
+
s.add_dependency "activesupport", ">= 3.2.12"
|
23
|
+
s.add_dependency "sprockets", ">= 2.4.5"
|
24
|
+
s.add_dependency "listen", ">= 0.7.3"
|
25
|
+
s.add_dependency "faye", ">= 0.8.8"
|
26
|
+
s.add_dependency "thin"
|
27
|
+
|
21
28
|
s.add_development_dependency "bundler", "~> 1.0.0"
|
22
|
-
s.add_development_dependency "rails", "
|
29
|
+
s.add_development_dependency "rails", ">= 3.2"
|
23
30
|
|
24
31
|
s.files = `git ls-files`.split("\n")
|
25
|
-
s.
|
32
|
+
s.executable = "luca"
|
26
33
|
s.require_paths = ['lib']
|
27
34
|
end
|
28
35
|
|
data/site/.bundle/config
ADDED
data/site/.gitignore
ADDED
data/site/.rvmrc
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
rvm use 1.9.3-p194
|
data/site/CHANGELOG.md
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
# Changelog
|
2
|
+
|
3
|
+
## 3.0.9 (September 24, 2012)
|
4
|
+
|
5
|
+
* Update to Middleman 3.0.5 (fixes 3.0.4 Livereload bug)
|
6
|
+
|
7
|
+
## 3.0.8 (September 22, 2012)
|
8
|
+
|
9
|
+
* Update to Middleman 3.0.4
|
10
|
+
* Default .rvmrc updated to Ruby 1.9.3-p194
|
11
|
+
|
12
|
+
## 3.0.7 (September 11, 2012)
|
13
|
+
|
14
|
+
* Update to Middleman 3.0.2
|
15
|
+
|
16
|
+
## 3.0.6 (September 2, 2012)
|
17
|
+
|
18
|
+
* Content is parsed with Markdown (using Redcarpet) by default
|
19
|
+
|
20
|
+
## 3.0.5 (September 2, 2012)
|
21
|
+
|
22
|
+
* Smart site and page titles/descriptions through /helpers/site_helpers.rb
|
23
|
+
* Better documentation
|
24
|
+
|
25
|
+
## 3.0.4 (September 2, 2012)
|
26
|
+
|
27
|
+
* [SMACSS](http://smacss.com/) stylesheet organization
|
28
|
+
|
29
|
+
## 3.0.3 (September 2, 2012)
|
30
|
+
|
31
|
+
* Added .htaccess for Apache builds
|
32
|
+
|
33
|
+
## 3.0.2 (September 2, 2012)
|
34
|
+
|
35
|
+
* Updated to HTML5 Boilerplate 4.0
|
36
|
+
* Updated to Susy 1.0
|
37
|
+
* Activate middleman-favicon-maker by default
|
38
|
+
|
39
|
+
## 3.0.1 and below
|
40
|
+
|
41
|
+
See commit log
|
data/site/DOCS.md
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
# Middleman / HTML5 Boilerplate Notes
|
2
|
+
|
3
|
+
Please note that this port of the HTML5 Boilerplate has been converted to use HAML and Sprockets, while using a Middleman 3.x workflow.
|
4
|
+
|
5
|
+
[The original HTML5 Boilerplate documentation](https://github.com/dannyprose/Middleman-HTML5BP-HAML/tree/master/html5bp-docs) is included at /html5bp-docs/ for your reference, but certain things (e.g. ways of including, specific javascript and CSS paths) may be different in our implementation.
|
6
|
+
|
7
|
+
## Recommendations
|
8
|
+
|
9
|
+
* Update `.rvmrc` to the [gemset](https://rvm.io/gemsets/basics/) of your choosing (or remove it if you do not use [RVM](https://rvm.io/))
|
10
|
+
* Double check `.gitignore` and make sure it is what you want.
|
11
|
+
* eg: `build/` is ignored by default.
|
12
|
+
* If you don't use `middleman init` to load the template, make sure to [use and run Bundler](http://gembundler.com/).
|
13
|
+
|
14
|
+
## Site and Individual Page Titles and Descriptions
|
15
|
+
|
16
|
+
One change we have made from the Boilerplate is some smarter ways of handling site/page titles and descriptions.
|
17
|
+
|
18
|
+
Titles and descriptions are handled 2 ways:
|
19
|
+
|
20
|
+
For the site at large, the title & description is handled through `/helpers/site_helpers.rb`. You can set them there, and the default layout file will include them on every page.
|
21
|
+
|
22
|
+
For individual pages, just add some YAML data to the top of any given page (see our default index for an example):
|
23
|
+
|
24
|
+
```yaml
|
25
|
+
---
|
26
|
+
title:
|
27
|
+
description:
|
28
|
+
---
|
29
|
+
```
|
30
|
+
|
31
|
+
### Changing the Site Title and Description
|
32
|
+
|
33
|
+
To the change site's title and description, edit the values in `/helpers/site_helpers.rb`. You can also edit the formatting for individual page title and descriptions here.
|
34
|
+
|
35
|
+
To change, individual page's titles and descriptions, see the YAML method above.
|
36
|
+
|
37
|
+
### But I Don't Want This
|
38
|
+
|
39
|
+
No problem - we only included it because we just thought this was a good, DRY use case for Middelman, and it is what the Middleman Docs site uses.
|
40
|
+
|
41
|
+
If you want to develop a method of your own, just remove the `page_title` and `page_description` methods in `/helpers/site_helpers.rb`, remove their references in `/layouts/layout.haml` (all within `<head>`), and restart Middleman. Then do whatever you want to include titles and headers.
|