coherent 0.2.1 → 0.3.0

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.
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