alongslide 0.9.1 → 0.9.2

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/Gemfile ADDED
@@ -0,0 +1,10 @@
1
+ source 'https://rubygems.org'
2
+
3
+ ruby '1.9.3'
4
+
5
+ gem 'redcarpet'
6
+ gem 'treetop'
7
+ gem 'polyglot'
8
+ gem 'haml'
9
+ gem 'rails'
10
+ gem 'rspec'
data/Gemfile.lock ADDED
@@ -0,0 +1,103 @@
1
+ GIT
2
+ remote: git://github.com/vmg/redcarpet.git
3
+ revision: f2ad99f4d3cefaa51655cbb47a075d8e88e86618
4
+ ref: f2ad99f
5
+ specs:
6
+ redcarpet (3.0.0)
7
+
8
+ GEM
9
+ remote: https://rubygems.org/
10
+ specs:
11
+ actionmailer (4.0.0)
12
+ actionpack (= 4.0.0)
13
+ mail (~> 2.5.3)
14
+ actionpack (4.0.0)
15
+ activesupport (= 4.0.0)
16
+ builder (~> 3.1.0)
17
+ erubis (~> 2.7.0)
18
+ rack (~> 1.5.2)
19
+ rack-test (~> 0.6.2)
20
+ activemodel (4.0.0)
21
+ activesupport (= 4.0.0)
22
+ builder (~> 3.1.0)
23
+ activerecord (4.0.0)
24
+ activemodel (= 4.0.0)
25
+ activerecord-deprecated_finders (~> 1.0.2)
26
+ activesupport (= 4.0.0)
27
+ arel (~> 4.0.0)
28
+ activerecord-deprecated_finders (1.0.3)
29
+ activesupport (4.0.0)
30
+ i18n (~> 0.6, >= 0.6.4)
31
+ minitest (~> 4.2)
32
+ multi_json (~> 1.3)
33
+ thread_safe (~> 0.1)
34
+ tzinfo (~> 0.3.37)
35
+ arel (4.0.0)
36
+ atomic (1.1.14)
37
+ builder (3.1.4)
38
+ diff-lcs (1.2.4)
39
+ erubis (2.7.0)
40
+ haml (4.0.3)
41
+ tilt
42
+ hike (1.2.3)
43
+ i18n (0.6.5)
44
+ mail (2.5.4)
45
+ mime-types (~> 1.16)
46
+ treetop (~> 1.4.8)
47
+ mime-types (1.25)
48
+ minitest (4.7.5)
49
+ multi_json (1.8.1)
50
+ polyglot (0.3.3)
51
+ rack (1.5.2)
52
+ rack-test (0.6.2)
53
+ rack (>= 1.0)
54
+ rails (4.0.0)
55
+ actionmailer (= 4.0.0)
56
+ actionpack (= 4.0.0)
57
+ activerecord (= 4.0.0)
58
+ activesupport (= 4.0.0)
59
+ bundler (>= 1.3.0, < 2.0)
60
+ railties (= 4.0.0)
61
+ sprockets-rails (~> 2.0.0)
62
+ railties (4.0.0)
63
+ actionpack (= 4.0.0)
64
+ activesupport (= 4.0.0)
65
+ rake (>= 0.8.7)
66
+ thor (>= 0.18.1, < 2.0)
67
+ rake (10.1.0)
68
+ rspec (2.14.1)
69
+ rspec-core (~> 2.14.0)
70
+ rspec-expectations (~> 2.14.0)
71
+ rspec-mocks (~> 2.14.0)
72
+ rspec-core (2.14.4)
73
+ rspec-expectations (2.14.0)
74
+ diff-lcs (>= 1.1.3, < 2.0)
75
+ rspec-mocks (2.14.2)
76
+ sprockets (2.10.0)
77
+ hike (~> 1.2)
78
+ multi_json (~> 1.0)
79
+ rack (~> 1.0)
80
+ tilt (~> 1.1, != 1.3.0)
81
+ sprockets-rails (2.0.0)
82
+ actionpack (>= 3.0)
83
+ activesupport (>= 3.0)
84
+ sprockets (~> 2.8)
85
+ thor (0.18.1)
86
+ thread_safe (0.1.3)
87
+ atomic
88
+ tilt (1.4.1)
89
+ treetop (1.4.14)
90
+ polyglot
91
+ polyglot (>= 0.3.1)
92
+ tzinfo (0.3.38)
93
+
94
+ PLATFORMS
95
+ ruby
96
+
97
+ DEPENDENCIES
98
+ haml
99
+ polyglot
100
+ rails
101
+ redcarpet!
102
+ rspec
103
+ treetop
@@ -0,0 +1,18 @@
1
+ Gem::Specification.new do |gem|
2
+ gem.name = 'alongslide'
3
+ gem.version = '0.9.2'
4
+
5
+ gem.summary = "Create dynamic web layouts with an extended Markdown syntax"
6
+ gem.description = "Create dynamic web layouts with an extended Markdown syntax"
7
+
8
+ gem.authors = ['Adam Florin', 'Anthony Tran']
9
+ gem.email = 'adam@canopycanopycanopy.com'
10
+ gem.homepage = 'http://github.com/triplecanopy/alongslide'
11
+
12
+ gem.add_dependency('redcarpet')
13
+ gem.add_dependency('treetop')
14
+ gem.add_dependency('polyglot')
15
+ gem.add_development_dependency('rspec')
16
+
17
+ gem.files = `git ls-files`.split("\n")
18
+ end
@@ -0,0 +1,107 @@
1
+ #
2
+ # alongslide.cofee: Central init, pull in submodules.
3
+ #
4
+ # Copyright 2013 Canopy Canopy Canopy, Inc.
5
+ # Authors Adam Florin & Anthony Tran
6
+ #
7
+ class Alongslide
8
+
9
+ panels : {}
10
+ sections : {}
11
+
12
+ parser : null
13
+ layout : null
14
+ scrolling : null
15
+
16
+ constructor: (options= {}) ->
17
+ @source = $(options.source) ? $('#content .raw')
18
+ @frames = $(options.to) ? $('#frames')
19
+ @regionCls = options.regionCls ? 'column'
20
+
21
+ RegionFlow::init()
22
+
23
+ # parse
24
+ @parser = new @Parser source: @source
25
+ {@flowNames, @backgrounds, @panels, @footnotes, @sourceLength} = @parser.parse()
26
+
27
+ # init layout
28
+ @layout = new @Layout
29
+ sourceLength: @sourceLength
30
+ frames: @frames
31
+ flowNames: @flowNames
32
+ backgrounds: @backgrounds
33
+ panels: @panels
34
+ regionCls: @regionCls
35
+
36
+ # init scrolling
37
+ @scrolling = new @Scrolling
38
+ frames: @frames
39
+
40
+
41
+ # Render flowing layout and scroll behavior.
42
+ #
43
+ # Force use of CSS Regions polyfill. (Don't trust native browser support
44
+ # while W3C draft is under active development.)
45
+ #
46
+ # @param frameAspect - bounding box computed by FixedAspect
47
+ # @param postRenderCallback - to be called when layout returns
48
+ #
49
+ render: (frameAspect, postRenderCallback) ->
50
+ @layout.render (lastFramePosition) =>
51
+
52
+ @lastFramePosition = lastFramePosition
53
+
54
+ @refresh(frameAspect)
55
+ @applyFootnotes()
56
+ @applyAnchorScrolling()
57
+
58
+ # Emit notification that layout is complete.
59
+ $(document).triggerHandler 'alongslide.ready', @frames
60
+
61
+ @hashToPosition()
62
+ postRenderCallback()
63
+
64
+ # Refresh Skrollr only on resize events, as it's fast.
65
+ #
66
+ refresh: (frameAspect) ->
67
+ @scrolling.render(frameAspect, @lastFramePosition)
68
+
69
+ hashToPosition: ->
70
+ hash = window.location.hash
71
+ if hash.length > 0
72
+ @goToPanel(hash.substr(1))
73
+ else
74
+ @goToPanel('titlesplash')
75
+
76
+
77
+ # Create footnotes
78
+ #
79
+ # Sanitize Markdown generated HTML
80
+ applyFootnotes: ->
81
+ # For each footnote in the article
82
+ @frames.find('a[rel=footnote]').each (i, el) =>
83
+ # Reference the footnote
84
+ $el = $(el)
85
+ # Find the actual footnote
86
+ $footnote = @footnotes.find($el.attr('href'))
87
+ # Append actualy footnote to footnote reference
88
+ $el.parent('sup').append($footnote)
89
+
90
+ # Add event listener to pin/unpin when clicked
91
+ $el.on "click", (e) -> $(this).toggleClass('active')
92
+
93
+ applyAnchorScrolling: ->
94
+ self = @
95
+ @frames.find('a[href*=#]:not([href=#])').on('click', (e) ->
96
+ self.goToPanel(@hash.substr(1))
97
+ )
98
+
99
+ goToPanel: (alsId) =>
100
+ $target = $('#frames').find('[data-alongslide-id=' + alsId + ']')
101
+ targetPos = $target.data('als-in-position')
102
+ @scrolling.scrollToPosition(targetPos)
103
+
104
+
105
+ # Make global
106
+ #
107
+ window.Alongslide = Alongslide