coherent 0.2.1 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (25) hide show
  1. data/Rakefile +2 -1
  2. data/VERSION +1 -1
  3. data/bin/coherent +1 -1
  4. data/coherent.gemspec +21 -2
  5. data/demo_generators/gallery/USAGE +5 -0
  6. data/demo_generators/gallery/gallery_generator.rb +67 -0
  7. data/demo_generators/gallery/templates/distil.yml.erb +51 -0
  8. data/demo_generators/gallery/templates/src/NOTICE.erb +2 -0
  9. data/demo_generators/gallery/templates/src/css/@name@.css.erb +120 -0
  10. data/demo_generators/gallery/templates/src/css/reset.css +70 -0
  11. data/demo_generators/gallery/templates/src/js/@name@.js.erb +5 -0
  12. data/demo_generators/gallery/templates/src/nibs/@name@/@name@.css +116 -0
  13. data/demo_generators/gallery/templates/src/nibs/@name@/@name@.html +6 -0
  14. data/demo_generators/gallery/templates/src/nibs/@name@/@name@.jsnib.erb +40 -0
  15. data/demo_generators/gallery/templates/src/nibs/@name@/@name@.json +25 -0
  16. data/demo_generators/gallery/templates/src/nibs/@name@/images/next.gif +0 -0
  17. data/demo_generators/gallery/templates/src/nibs/@name@/images/prev.gif +0 -0
  18. data/demo_generators/gallery/templates/src/nibs/@name@/photos/molly-1.jpg +0 -0
  19. data/demo_generators/gallery/templates/src/nibs/@name@/photos/molly-2.jpg +0 -0
  20. data/demo_generators/gallery/templates/src/nibs/@name@/photos/molly-3.jpg +0 -0
  21. data/demo_generators/gallery/templates/src/nibs/@name@/photos/molly-4.jpg +0 -0
  22. data/demo_generators/gallery/templates/src/nibs/@name@/photos/molly-5.jpg +0 -0
  23. data/demo_generators/gallery/templates/src/pages/index.html.erb +14 -0
  24. data/lib/coherent.rb +1 -1
  25. metadata +21 -2
data/Rakefile CHANGED
@@ -10,7 +10,8 @@ begin
10
10
  gem.email = "jeff@metrocat.org"
11
11
  gem.homepage = "http://coherentjs.org"
12
12
  gem.authors = ["Jeff Watkins"]
13
- gem.files= Dir['lib/**/*', 'app_generators/**/*', 'generators/**/*', 'bin/*', '[A-Za-z]*', 'vendor/**/*']
13
+ gem.files= Dir['lib/**/*', 'app_generators/**/*', 'generators/**/*',
14
+ 'demo_generators/**/*', 'bin/*', '[A-Za-z]*', 'vendor/**/*']
14
15
  gem.files.reject! { |f| File.directory?(f) }
15
16
  gem.add_dependency('distil', '>= 0.8.4')
16
17
  gem.add_dependency('rubigen', '>= 1.5.2')
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.1
1
+ 0.3.0
data/bin/coherent CHANGED
@@ -27,7 +27,7 @@ when 'app'
27
27
  when 'demo'
28
28
  # pull off app "command"
29
29
  ARGV.shift
30
-
30
+
31
31
  source = RubiGen::PathSource.new(:application,
32
32
  File.join(File.dirname(__FILE__), "../demo_generators"))
33
33
  RubiGen::Base.reset_sources
data/coherent.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{coherent}
8
- s.version = "0.2.1"
8
+ s.version = "0.3.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Jeff Watkins"]
12
- s.date = %q{2010-01-17}
12
+ s.date = %q{2010-02-18}
13
13
  s.default_executable = %q{coherent}
14
14
  s.description = %q{Tools for building Coherent application or modules.}
15
15
  s.email = %q{jeff@metrocat.org}
@@ -33,6 +33,25 @@ Gem::Specification.new do |s|
33
33
  "app_generators/coherent/templates/src/pages/index.html.erb",
34
34
  "bin/coherent",
35
35
  "coherent.gemspec",
36
+ "demo_generators/gallery/USAGE",
37
+ "demo_generators/gallery/gallery_generator.rb",
38
+ "demo_generators/gallery/templates/distil.yml.erb",
39
+ "demo_generators/gallery/templates/src/NOTICE.erb",
40
+ "demo_generators/gallery/templates/src/css/@name@.css.erb",
41
+ "demo_generators/gallery/templates/src/css/reset.css",
42
+ "demo_generators/gallery/templates/src/js/@name@.js.erb",
43
+ "demo_generators/gallery/templates/src/nibs/@name@/@name@.css",
44
+ "demo_generators/gallery/templates/src/nibs/@name@/@name@.html",
45
+ "demo_generators/gallery/templates/src/nibs/@name@/@name@.jsnib.erb",
46
+ "demo_generators/gallery/templates/src/nibs/@name@/@name@.json",
47
+ "demo_generators/gallery/templates/src/nibs/@name@/images/next.gif",
48
+ "demo_generators/gallery/templates/src/nibs/@name@/images/prev.gif",
49
+ "demo_generators/gallery/templates/src/nibs/@name@/photos/molly-1.jpg",
50
+ "demo_generators/gallery/templates/src/nibs/@name@/photos/molly-2.jpg",
51
+ "demo_generators/gallery/templates/src/nibs/@name@/photos/molly-3.jpg",
52
+ "demo_generators/gallery/templates/src/nibs/@name@/photos/molly-4.jpg",
53
+ "demo_generators/gallery/templates/src/nibs/@name@/photos/molly-5.jpg",
54
+ "demo_generators/gallery/templates/src/pages/index.html.erb",
36
55
  "generators/class/USAGE",
37
56
  "generators/class/class_generator.rb",
38
57
  "generators/class/templates/@name@.js.erb",
@@ -0,0 +1,5 @@
1
+ Description:
2
+
3
+
4
+ Usage:
5
+
@@ -0,0 +1,67 @@
1
+ require "#{File.dirname(__FILE__)}/../../lib/coherent"
2
+
3
+ class GalleryGenerator < CoherentBaseGenerator
4
+
5
+ DEFAULT_SHEBANG = File.join(Config::CONFIG['bindir'],
6
+ Config::CONFIG['ruby_install_name'])
7
+
8
+ COHERENT_URL = ""
9
+ COHERENT_FOLDER = "ext/coherent"
10
+
11
+ default_options :author => nil
12
+
13
+ attr_reader :name, :nib_name
14
+
15
+ def initialize(runtime_args, runtime_options = {})
16
+ super
17
+ usage if args.empty?
18
+ @destination_root = File.expand_path(args.shift)
19
+ @name = base_name
20
+ extract_options
21
+ end
22
+
23
+ def manifest
24
+ record do |m|
25
+ # Ensure appropriate folder(s) exists
26
+ m.directory ''
27
+ BASEDIRS.each { |path| m.directory path }
28
+
29
+ copy_template_folder m
30
+ end
31
+ end
32
+
33
+ protected
34
+ def banner
35
+ <<-EOS
36
+ Creates a ...
37
+
38
+ USAGE: #{spec.name} name
39
+ EOS
40
+ end
41
+
42
+ def add_options!(opts)
43
+ opts.separator ''
44
+ opts.separator 'Options:'
45
+ # For each option below, place the default
46
+ # at the top of the file next to "default_options"
47
+ # opts.on("-a", "--author=\"Your Name\"", String,
48
+ # "Some comment about this option",
49
+ # "Default: none") { |o| options[:author] = o }
50
+ opts.on("-v", "--version", "Show the #{File.basename($0)} version number and quit.")
51
+ end
52
+
53
+ def extract_options
54
+ # for each option, extract it into a local variable (and create an "attr_reader :author" at the top)
55
+ # Templates can access these value via the attr_reader-generated methods, but not the
56
+ # raw instance variable value.
57
+ # @author = options[:author]
58
+ @nib_name= options[:nib_name]
59
+ end
60
+
61
+ # Installation skeleton. Intermediate directories are automatically
62
+ # created so don't sweat their absence here.
63
+ BASEDIRS = %w(
64
+ src
65
+ test
66
+ )
67
+ end
@@ -0,0 +1,51 @@
1
+ name: <%=name%>
2
+ version: 1.0.0
3
+ notice: src/NOTICE
4
+ output folder: build/res/latest
5
+
6
+ # When copying or linking to the source in the build, remove this folder prefix
7
+ # before copying or linking.
8
+ remove prefix: src
9
+
10
+ # Need to include the coherent extensions for Distil.
11
+ distilery: coherent
12
+
13
+ # Set up external projects.
14
+ external projects:
15
+ ext/coherent: http://coherent.googlecode.com/svn/trunk
16
+
17
+
18
+
19
+ # This is the main target for your application. This target will yield optimised
20
+ # CSS and Javascript files for all of your assets. In addition, it will emit
21
+ # uncompressed and debug versions which are useful during development.
22
+ all:
23
+ js:
24
+ # Your main Javascript assets, specified in order they should be loaded.
25
+ # The final entry loads all Javascript assets in the src/js folder and
26
+ # uses the import statements to compute the dependency order.
27
+ - coherent-uncompressed.js
28
+ - src/js/<%=name%>.js
29
+ - src/js
30
+
31
+ css:
32
+ # Your CSS files. You may include all CSS files in the src/css folder,
33
+ # but they may be included in the wrong order. So it's usually best to
34
+ # specify them explicitly
35
+ - src/css/reset.css
36
+ - src/css/<%=name%>.js
37
+
38
+ jsnib:
39
+ # Create a JSNIB package file for each folder in the src/nibs folder.
40
+ # A JSNIB package is a self contained group of Javascript, CSS and HTML
41
+ # that is used to provide loadable UI modules.
42
+ remove prefix: src/nibs
43
+ include: src/nibs
44
+
45
+ pages:
46
+ # Copy any HTML assets from the src/pages folder over to the build folder.
47
+ # If you're using a server framework, you should consider simply deleting
48
+ # this target.
49
+ output folder: build
50
+ remove prefix: src/pages
51
+ copy: src/pages
@@ -0,0 +1,2 @@
1
+ Copyright <%=Date.today.year%> You.
2
+ All rights reserved.
@@ -0,0 +1,120 @@
1
+ /* This is the primary CSS file for the <%=name.titlecase%> application. */
2
+
3
+ /* Styles for UI elements that have been selected.
4
+ */
5
+ .selected
6
+ {
7
+ }
8
+
9
+ /* Styles applied to views that are disabled. Not all browsers support the
10
+ disabled pseudo selector, so Coherent applies the disabled class instead.
11
+ */
12
+ .disabled
13
+ {
14
+ }
15
+
16
+ /* Views that are read-only will have these styles.
17
+ */
18
+ .read-only
19
+ {
20
+ }
21
+
22
+ /* When a view is displaying the placeholder value for a null value, the view
23
+ will have this class name.
24
+ */
25
+ .nullValue
26
+ {
27
+ }
28
+
29
+ /* Since not all browsers support the focus pseudo selector, Coherent applies
30
+ the focused class to all views that accept first responder status.
31
+ */
32
+ .focused
33
+ {
34
+ }
35
+
36
+ .hover
37
+ {
38
+ }
39
+
40
+ .asc
41
+ {
42
+ }
43
+
44
+ .desc
45
+ {
46
+ }
47
+
48
+ .active
49
+ {
50
+ }
51
+
52
+ .updating
53
+ {
54
+ }
55
+
56
+ .invisible
57
+ {
58
+ }
59
+
60
+ .invalid
61
+ {
62
+ }
63
+
64
+ .inserted
65
+ {
66
+ }
67
+
68
+ .deleted
69
+ {
70
+ }
71
+
72
+ .replacing
73
+ {
74
+ }
75
+
76
+ .loading
77
+ {
78
+ }
79
+
80
+ .first
81
+ {
82
+ }
83
+
84
+ .last
85
+ {
86
+ }
87
+
88
+ .drag-and-drop-copy
89
+ {
90
+ }
91
+
92
+ .drag-and-drop-move
93
+ {
94
+ }
95
+
96
+ .drag-and-drop-link
97
+ {
98
+ }
99
+
100
+ .drag-and-drop-no
101
+ {
102
+ }
103
+
104
+ .coherent_windowInactive
105
+ {
106
+ }
107
+
108
+ .outline-expanded
109
+ {
110
+ }
111
+
112
+ .outline-leaf
113
+ {
114
+ }
115
+
116
+ .outline-disclosure-button
117
+ {
118
+ }
119
+
120
+
@@ -0,0 +1,70 @@
1
+ /* http://meyerweb.com/eric/tools/css/reset/ */
2
+ /* v1.0 | 20080212 */
3
+
4
+ html, body, div, span, applet, object, iframe,
5
+ h1, h2, h3, h4, h5, h6, p, blockquote, pre,
6
+ a, abbr, acronym, address, big, cite, code,
7
+ del, dfn, em, font, img, ins, kbd, q, s, samp,
8
+ small, strike, strong, sub, sup, tt, var,
9
+ b, u, i, center,
10
+ dl, dt, dd, ol, ul, li,
11
+ fieldset, form, label, legend,
12
+ table, caption, tbody, tfoot, thead, tr, th, td {
13
+ margin: 0;
14
+ padding: 0;
15
+ border: 0;
16
+ outline: 0;
17
+ font-size: 100%;
18
+ vertical-align: baseline;
19
+ background: transparent;
20
+ font-weight: normal;
21
+ font-style: normal;
22
+ }
23
+ em, i
24
+ {
25
+ font-style: normal;
26
+ }
27
+ b, strong
28
+ {
29
+ font-weight: normal;
30
+ }
31
+
32
+ a:focus, a:active, button:focus, button:active
33
+ {
34
+ outline: 0;
35
+ }
36
+ button::-moz-focus-inner { border: 0; }
37
+
38
+ body {
39
+ line-height: 1;
40
+ }
41
+ ol, ul {
42
+ list-style: none;
43
+ }
44
+ blockquote, q {
45
+ quotes: none;
46
+ }
47
+ blockquote:before, blockquote:after,
48
+ q:before, q:after {
49
+ content: '';
50
+ content: none;
51
+ }
52
+
53
+ /* remember to define focus styles! */
54
+ /*:focus {
55
+ outline: 0;
56
+ }
57
+ */
58
+ /* remember to highlight inserts somehow! */
59
+ ins {
60
+ text-decoration: none;
61
+ }
62
+ del {
63
+ text-decoration: line-through;
64
+ }
65
+
66
+ /* tables still need 'cellspacing="0"' in the markup */
67
+ table {
68
+ border-collapse: collapse;
69
+ border-spacing: 0;
70
+ }
@@ -0,0 +1,5 @@
1
+ /*jsl:import coherent-uncompressed.js*/
2
+
3
+ /**
4
+ Core JS file file for the <%=name.titlecase%> application.
5
+ */
@@ -0,0 +1,116 @@
1
+ .gallery
2
+ {
3
+ border: 1px solid #888;
4
+ -webkit-border-radius: 5px;
5
+ background-color: #f8f8f8;
6
+ padding: 10px 10px 35px 10px;
7
+ width: 254px;
8
+ height: 200px;
9
+ -webkit-box-shadow: 0px 2px 5px rgba(0,0,0,0.5);
10
+
11
+ overflow: hidden;
12
+ position: fixed;
13
+ left: 50%;
14
+ top: 50%;
15
+ margin: -125px 0 0 -127px;
16
+ }
17
+
18
+ .gallery.invisible
19
+ {
20
+ opacity: 0.5;
21
+ width: 50px;
22
+ height: 50px;
23
+ margin: -25px 0 0 -25px;
24
+ }
25
+
26
+ .gallery.invisible *
27
+ {
28
+ display: none !important;
29
+ }
30
+
31
+ .gallery p
32
+ {
33
+ font-family: helvetica, arial, sans serif;
34
+ font-size: 13px;
35
+ color: #555;
36
+ background-color: inherit;
37
+ }
38
+
39
+ .gallery p.c-updating
40
+ {
41
+ background-color: yellow;
42
+ }
43
+
44
+ .gallery img
45
+ {
46
+ border: 1px solid #666;
47
+ padding: 1px;
48
+ background-color: white;
49
+ }
50
+
51
+ .gallery a.next
52
+ {
53
+ position: absolute;
54
+ display: block;
55
+ text-indent: -9999px;
56
+ outline: none;
57
+ background-image: url(images/next.gif);
58
+ right: 10px;
59
+ bottom: 10px;
60
+ height: 22px;
61
+ width: 22px;
62
+ background-position: 0px -22px;
63
+ }
64
+
65
+ .gallery a.prev
66
+ {
67
+ position: absolute;
68
+ display: block;
69
+ outline: none;
70
+ text-indent: -9999px;
71
+ background-image: url(images/prev.gif);
72
+ left: 10px;
73
+ bottom: 10px;
74
+ height: 22px;
75
+ width: 22px;
76
+ background-position: 0px -22px;
77
+ }
78
+
79
+ .gallery a.next:active,
80
+ .gallery a.prev:active
81
+ {
82
+ background-position: 0px 0px;
83
+ }
84
+
85
+ .gallery a.c-disabled,
86
+ .gallery a.c-disabled:active
87
+ {
88
+ background-position: 0px -44px;
89
+ cursor: default;
90
+ }
91
+
92
+ .modal-overlay-guard
93
+ {
94
+ position: fixed;
95
+ left: 0;
96
+ top: 0;
97
+ width: 100%;
98
+ height: 100%;
99
+ }
100
+
101
+ .modal-overlay-backdrop
102
+ {
103
+ background-color: black;
104
+ opacity: 0.65;
105
+ position: fixed;
106
+ left: 0;
107
+ top: 0;
108
+ width: 100%;
109
+ height: 100%;
110
+ }
111
+
112
+ .modal-overlay-backdrop.invisible
113
+ {
114
+ opacity: 0;
115
+ }
116
+
@@ -0,0 +1,6 @@
1
+ <div class="gallery">
2
+ <img src="photos/molly-1.jpg">
3
+ <p>Caption</p>
4
+ <a href="#" class="prev">Previous</a>
5
+ <a href="#" class="next">Next</a>
6
+ </div>
@@ -0,0 +1,40 @@
1
+ /*jsl:import coherent-uncompressed.js*/
2
+
3
+ NIB.asset('<%=name%>.css');
4
+
5
+ NIB({
6
+
7
+ '<%=name%>': VIEW(NIB.asset('<%=name%>.html'), {
8
+ ':root': coherent.View({
9
+ visibleBinding: 'controller.arrangedObjects.@count'
10
+ }),
11
+ 'img': coherent.Image({
12
+ srcBinding: 'controller.selection.href'
13
+ }),
14
+ 'p': coherent.View({
15
+ textBinding: 'controller.selection.caption'
16
+ }),
17
+ 'a.next': coherent.Anchor({
18
+ enabledBinding: 'controller.canSelectNext',
19
+ target: 'controller',
20
+ action: 'selectNext'
21
+ }),
22
+ 'a.prev': coherent.Anchor({
23
+ enabledBinding: 'controller.canSelectPrevious',
24
+ target: 'controller',
25
+ action: 'selectPrevious'
26
+ })
27
+ }),
28
+
29
+ 'data': NIB.asset('<%=name%>.json'),
30
+
31
+ 'controller': coherent.ArrayController({
32
+ contentBinding: 'data.photos'
33
+ }),
34
+
35
+ 'owner': {
36
+ view: '<%=name%>'
37
+ }
38
+
39
+ });
40
+
@@ -0,0 +1,25 @@
1
+ {
2
+ photos: [
3
+ {
4
+ caption: "Molly on the slide.",
5
+ href: NIB.asset("photos/molly-1.jpg")
6
+ },
7
+ {
8
+ caption: "Monkey in training",
9
+ href: NIB.asset("photos/molly-2.jpg")
10
+ },
11
+ {
12
+ caption: "Spaz attack!",
13
+ href: NIB.asset("photos/molly-3.jpg")
14
+ },
15
+ {
16
+ caption: "Ride `Em, Molly!",
17
+ href: NIB.asset("photos/molly-4.jpg")
18
+ },
19
+ {
20
+ caption: "Don't mess with my zebra.",
21
+ href: NIB.asset("photos/molly-5.jpg")
22
+ }
23
+ ]
24
+
25
+ }
@@ -0,0 +1,14 @@
1
+ <!DOCTYPE HTML>
2
+ <html>
3
+ <head>
4
+ <meta http-equiv="X-UA-Compatible" content="IE=8">
5
+ <title><%=name.titlecase%></title>
6
+
7
+ <link rel="stylesheet" href="res/latest/<%=name%>-debug.css" type="text/css" charset="utf-8">
8
+ <script src="res/latest/<%=name%>-debug.js" type="text/javascript" charset="utf-8"></script>
9
+ </head>
10
+
11
+ <body>
12
+ <script src="res/latest/<%=name%>.jsnib"></script>
13
+ </body>
14
+ </html>
data/lib/coherent.rb CHANGED
@@ -1,4 +1,4 @@
1
- require "activesupport"
1
+ require "active_support"
2
2
 
3
3
  class CoherentBaseGenerator < RubiGen::Base
4
4
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: coherent
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeff Watkins
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2010-01-17 00:00:00 -08:00
12
+ date: 2010-02-18 00:00:00 -08:00
13
13
  default_executable: coherent
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -56,6 +56,25 @@ files:
56
56
  - app_generators/coherent/templates/src/pages/index.html.erb
57
57
  - bin/coherent
58
58
  - coherent.gemspec
59
+ - demo_generators/gallery/USAGE
60
+ - demo_generators/gallery/gallery_generator.rb
61
+ - demo_generators/gallery/templates/distil.yml.erb
62
+ - demo_generators/gallery/templates/src/NOTICE.erb
63
+ - demo_generators/gallery/templates/src/css/@name@.css.erb
64
+ - demo_generators/gallery/templates/src/css/reset.css
65
+ - demo_generators/gallery/templates/src/js/@name@.js.erb
66
+ - demo_generators/gallery/templates/src/nibs/@name@/@name@.css
67
+ - demo_generators/gallery/templates/src/nibs/@name@/@name@.html
68
+ - demo_generators/gallery/templates/src/nibs/@name@/@name@.jsnib.erb
69
+ - demo_generators/gallery/templates/src/nibs/@name@/@name@.json
70
+ - demo_generators/gallery/templates/src/nibs/@name@/images/next.gif
71
+ - demo_generators/gallery/templates/src/nibs/@name@/images/prev.gif
72
+ - demo_generators/gallery/templates/src/nibs/@name@/photos/molly-1.jpg
73
+ - demo_generators/gallery/templates/src/nibs/@name@/photos/molly-2.jpg
74
+ - demo_generators/gallery/templates/src/nibs/@name@/photos/molly-3.jpg
75
+ - demo_generators/gallery/templates/src/nibs/@name@/photos/molly-4.jpg
76
+ - demo_generators/gallery/templates/src/nibs/@name@/photos/molly-5.jpg
77
+ - demo_generators/gallery/templates/src/pages/index.html.erb
59
78
  - generators/class/USAGE
60
79
  - generators/class/class_generator.rb
61
80
  - generators/class/templates/@name@.js.erb