bone_tree 0.5.6 → 0.9.2
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +26 -3
- data/Gemfile +5 -12
- data/Rakefile +7 -9
- data/bone_tree.gemspec +30 -14
- data/config.rb +8 -0
- data/lib/assets/javascripts/bone_tree.js +277 -981
- data/lib/assets/stylesheets/bone_tree.css +108 -0
- data/lib/bone_tree/rails.rb +5 -0
- data/lib/bone_tree/sprockets.rb +3 -0
- data/lib/{version.rb → bone_tree/version.rb} +1 -1
- data/lib/bone_tree.rb +11 -6
- data/source/index.html.haml +10 -382
- data/source/javascripts/{_backbone.js → backbone.js} +282 -142
- data/source/javascripts/bone_tree/models/directory.js.coffee +109 -0
- data/source/javascripts/bone_tree/models/file.js.coffee +12 -0
- data/source/javascripts/bone_tree/models/node.js.coffee +24 -0
- data/source/javascripts/bone_tree/models/settings.js.coffee +5 -0
- data/source/javascripts/bone_tree/{_namespace.js.coffee → namespace.js.coffee} +1 -1
- data/source/javascripts/bone_tree/views/directory.js.coffee +56 -0
- data/source/javascripts/bone_tree/views/file.js.coffee +25 -0
- data/source/javascripts/bone_tree/views/tree.js.coffee +87 -0
- data/source/javascripts/bone_tree.js.coffee +2 -1
- data/source/stylesheets/bone_tree.css.sass +0 -38
- data/spec/javascripts/directory_spec.coffee +26 -0
- data/spec/javascripts/helpers/spec_helper.coffee +3 -4
- data/spec/javascripts/sorting_spec.coffee +12 -0
- data/spec/javascripts/support/jasmine.yml +6 -4
- metadata +143 -36
- data/Gemfile.lock +0 -190
- data/docs/index.html +0 -222
- data/docs/resources/base.css +0 -70
- data/docs/resources/index.css +0 -20
- data/docs/resources/module.css +0 -24
- data/docs/source/javascripts/bone_tree/_namespace.js.html +0 -45
- data/docs/source/javascripts/bone_tree/models/_directory.js.html +0 -126
- data/docs/source/javascripts/bone_tree/models/_file.js.html +0 -112
- data/docs/source/javascripts/bone_tree/models/_nodes.js.html +0 -174
- data/docs/source/javascripts/bone_tree/models/_settings.js.html +0 -75
- data/docs/source/javascripts/bone_tree/views/_directory.js.html +0 -94
- data/docs/source/javascripts/bone_tree/views/_file.js.html +0 -82
- data/docs/source/javascripts/bone_tree/views/_menu.js.html +0 -110
- data/docs/source/javascripts/bone_tree/views/_tree.js.html +0 -432
- data/source/javascripts/_jquery.min.js +0 -5
- data/source/javascripts/_underscore.js +0 -999
- data/source/javascripts/bone_tree/models/_directory.js.coffee +0 -63
- data/source/javascripts/bone_tree/models/_file.js.coffee +0 -55
- data/source/javascripts/bone_tree/models/_nodes.js.coffee +0 -117
- data/source/javascripts/bone_tree/models/_settings.js.coffee +0 -25
- data/source/javascripts/bone_tree/views/_directory.js.coffee +0 -73
- data/source/javascripts/bone_tree/views/_file.js.coffee +0 -51
- data/source/javascripts/bone_tree/views/_menu.js.coffee +0 -97
- data/source/javascripts/bone_tree/views/_tree.js.coffee +0 -498
- data/spec/javascripts/directory_view_spec.coffee +0 -91
- data/spec/javascripts/file_view_spec.coffee +0 -70
- data/spec/javascripts/menu_view_spec.coffee +0 -42
- data/spec/javascripts/nodes_spec.coffee +0 -37
- data/spec/javascripts/tree_view_spec.coffee +0 -39
@@ -0,0 +1,109 @@
|
|
1
|
+
#= require ./node
|
2
|
+
|
3
|
+
BoneTree.namespace "BoneTree.Models", (Models) ->
|
4
|
+
class Models.Directory extends Models.Node
|
5
|
+
add: (filePath, fileData={}) =>
|
6
|
+
{Directory, File} = Models
|
7
|
+
|
8
|
+
[dirs..., fileName] = filePath.split('/')
|
9
|
+
|
10
|
+
currentDirectory = @
|
11
|
+
|
12
|
+
dirs.each (directoryName) ->
|
13
|
+
return if directoryName is ''
|
14
|
+
|
15
|
+
directory = currentDirectory.directories().select (dir) ->
|
16
|
+
dir.name() is directoryName
|
17
|
+
.first()
|
18
|
+
|
19
|
+
unless directory
|
20
|
+
directory = new Directory
|
21
|
+
path: filePath.substring(0, filePath.indexOf(directoryName) + directoryName.length)
|
22
|
+
|
23
|
+
currentDirectory.collection.add(directory)
|
24
|
+
|
25
|
+
currentDirectory = directory
|
26
|
+
|
27
|
+
if file = currentDirectory.getFile(fileName)
|
28
|
+
file.set(fileData)
|
29
|
+
else
|
30
|
+
file = new File(_.extend(fileData, {path: filePath}))
|
31
|
+
|
32
|
+
currentDirectory.collection.add file
|
33
|
+
|
34
|
+
return file
|
35
|
+
|
36
|
+
remove: (path) =>
|
37
|
+
if file = @getFile(path)
|
38
|
+
file.destroy()
|
39
|
+
else if directory = @getDirectory(path)
|
40
|
+
directory.destroy()
|
41
|
+
|
42
|
+
directories: =>
|
43
|
+
@collection.filter (node) ->
|
44
|
+
node.isDirectory()
|
45
|
+
|
46
|
+
getDirectory: (directoryPath) =>
|
47
|
+
[first, rest...] = directoryPath.split('/')
|
48
|
+
|
49
|
+
match = @collection.find (node) ->
|
50
|
+
node.name() is first
|
51
|
+
|
52
|
+
if match?.isDirectory()
|
53
|
+
if rest.length
|
54
|
+
return match.getDirectory(rest.join('/'))
|
55
|
+
else
|
56
|
+
return match
|
57
|
+
|
58
|
+
return undefined
|
59
|
+
|
60
|
+
files: =>
|
61
|
+
@collection.filter (node) ->
|
62
|
+
node.isFile()
|
63
|
+
|
64
|
+
getFile: (filePath) =>
|
65
|
+
[first, rest...] = filePath.split '/'
|
66
|
+
|
67
|
+
match = @collection.find (node) ->
|
68
|
+
node.name() is first
|
69
|
+
|
70
|
+
if match?.isDirectory()
|
71
|
+
if rest.length
|
72
|
+
return match.getFile(rest.join('/'))
|
73
|
+
else
|
74
|
+
return undefined
|
75
|
+
else
|
76
|
+
return match
|
77
|
+
|
78
|
+
toArray: =>
|
79
|
+
results = [@]
|
80
|
+
|
81
|
+
@collection.each (node) =>
|
82
|
+
results = results.concat node.toArray()
|
83
|
+
|
84
|
+
results
|
85
|
+
|
86
|
+
toAscii: (indentation='') =>
|
87
|
+
nodeAscii = ["#{indentation}+#{@name()}"]
|
88
|
+
|
89
|
+
@collection.each (node) ->
|
90
|
+
nodeAscii.push node.toAscii(indentation + ' ')
|
91
|
+
|
92
|
+
nodeAscii.join('\n')
|
93
|
+
|
94
|
+
updateChildren: (previousPath, newPath) =>
|
95
|
+
@directories().each (directory) =>
|
96
|
+
directory.updateChildren(previousPath, newPath)
|
97
|
+
|
98
|
+
directoryPath = @get('path')
|
99
|
+
|
100
|
+
if directoryPath.indexOf(newPath) is -1
|
101
|
+
@set
|
102
|
+
path: @get('path').replace(previousPath, newPath)
|
103
|
+
|
104
|
+
@files().each (file) =>
|
105
|
+
filePath = file.get('path')
|
106
|
+
|
107
|
+
if filePath.indexOf(newPath) is -1
|
108
|
+
file.set
|
109
|
+
path: file.get('path').replace(previousPath, newPath)
|
@@ -0,0 +1,24 @@
|
|
1
|
+
BoneTree.namespace "BoneTree.Models", (Models) ->
|
2
|
+
class Models.Node extends Backbone.Model
|
3
|
+
initialize: ->
|
4
|
+
@collection = new Models.Nodes
|
5
|
+
|
6
|
+
isDirectory: =>
|
7
|
+
@ instanceof Models.Directory
|
8
|
+
|
9
|
+
isFile: =>
|
10
|
+
@ instanceof Models.File
|
11
|
+
|
12
|
+
name: =>
|
13
|
+
@get('path').split('/').last()
|
14
|
+
|
15
|
+
class Models.Nodes extends Backbone.Collection
|
16
|
+
comparator: (node) ->
|
17
|
+
if node.isDirectory()
|
18
|
+
sortPriority = 0
|
19
|
+
else
|
20
|
+
sortPriority = 1
|
21
|
+
|
22
|
+
return sortPriority + node.name()
|
23
|
+
|
24
|
+
model: Models.Node
|
@@ -0,0 +1,56 @@
|
|
1
|
+
BoneTree.namespace "BoneTree.Views", (Views) ->
|
2
|
+
class Views.Directory extends Backbone.View
|
3
|
+
className: 'directory'
|
4
|
+
tagName: 'ul'
|
5
|
+
|
6
|
+
initialize: (options) ->
|
7
|
+
@tree = options.tree
|
8
|
+
|
9
|
+
@$el.attr 'data-cid', @model.cid
|
10
|
+
|
11
|
+
@open = false
|
12
|
+
|
13
|
+
@model.bind 'change:path', (model) =>
|
14
|
+
@tree.render().trigger 'rename', model, name
|
15
|
+
|
16
|
+
previousPath = model.previous('path')
|
17
|
+
|
18
|
+
if (path = model.get('path')).indexOf('/') is 0
|
19
|
+
newPath = path.replace('/', '')
|
20
|
+
else
|
21
|
+
newPath = path
|
22
|
+
|
23
|
+
model.updateChildren(previousPath, newPath)
|
24
|
+
|
25
|
+
@model.collection.bind 'add', @render
|
26
|
+
|
27
|
+
@model.collection.bind 'remove', (model, collection) =>
|
28
|
+
@tree.trigger 'remove', model
|
29
|
+
@render()
|
30
|
+
|
31
|
+
@displayChildren(@open)
|
32
|
+
|
33
|
+
appendView: (node) =>
|
34
|
+
view = @tree.findOrCreateView(node)
|
35
|
+
|
36
|
+
@$el.append view.render().$el
|
37
|
+
|
38
|
+
render: =>
|
39
|
+
@$el.text @model.name()
|
40
|
+
|
41
|
+
@model.collection.each @appendView
|
42
|
+
|
43
|
+
@displayChildren(@$el.hasClass('open'))
|
44
|
+
|
45
|
+
return @
|
46
|
+
|
47
|
+
displayChildren: (open) =>
|
48
|
+
fileDirChildren = @$el.children('.directory, .file')
|
49
|
+
|
50
|
+
@$el.toggleClass('open', open)
|
51
|
+
fileDirChildren.toggle(open)
|
52
|
+
|
53
|
+
toggleOpen: =>
|
54
|
+
@open = not @open
|
55
|
+
|
56
|
+
@displayChildren(@open)
|
@@ -0,0 +1,25 @@
|
|
1
|
+
BoneTree.namespace "BoneTree.Views", (Views) ->
|
2
|
+
class Views.File extends Backbone.View
|
3
|
+
tagName: 'li'
|
4
|
+
|
5
|
+
initialize: (options) ->
|
6
|
+
@settings = options.settings
|
7
|
+
@tree = options.tree
|
8
|
+
|
9
|
+
@model.bind 'change:path', (model) =>
|
10
|
+
@render()
|
11
|
+
|
12
|
+
render: =>
|
13
|
+
name = @model.name()
|
14
|
+
|
15
|
+
extension = name.extension()
|
16
|
+
|
17
|
+
@$el.attr('data-cid', @model.cid)
|
18
|
+
@$el.attr('class', "file #{extension}")
|
19
|
+
|
20
|
+
if @settings.get('showExtensions')
|
21
|
+
@$el.text name
|
22
|
+
else
|
23
|
+
@$el.text name.withoutExtension()
|
24
|
+
|
25
|
+
return @
|
@@ -0,0 +1,87 @@
|
|
1
|
+
BoneTree.namespace "BoneTree.Views", (Views) ->
|
2
|
+
{Models} = BoneTree
|
3
|
+
|
4
|
+
class Views.Tree extends Backbone.View
|
5
|
+
className: 'tree'
|
6
|
+
|
7
|
+
events:
|
8
|
+
'mousedown .directory': '_openDirectory'
|
9
|
+
'mousedown .file': '_openFile'
|
10
|
+
|
11
|
+
initialize: ->
|
12
|
+
@viewCache = {}
|
13
|
+
|
14
|
+
@settings = new Models.Settings(@options)
|
15
|
+
|
16
|
+
@root = new Models.Directory {path: '/'}
|
17
|
+
|
18
|
+
@root.collection.bind 'add', @render
|
19
|
+
|
20
|
+
@root.collection.bind 'remove', (model, collection) =>
|
21
|
+
@$("[data-cid='#{model.cid}']").remove()
|
22
|
+
|
23
|
+
@render()
|
24
|
+
|
25
|
+
@trigger 'remove', model
|
26
|
+
|
27
|
+
add: (filePath, fileData) =>
|
28
|
+
if Object.isArray(filePath)
|
29
|
+
@add(file.path, file) for file in filePath
|
30
|
+
else
|
31
|
+
@root.add(filePath, fileData)
|
32
|
+
|
33
|
+
remove: (path) =>
|
34
|
+
@root.remove(path)
|
35
|
+
|
36
|
+
findOrCreateView: (node) =>
|
37
|
+
if node.isDirectory()
|
38
|
+
type = 'Directory'
|
39
|
+
else
|
40
|
+
type = 'File'
|
41
|
+
|
42
|
+
unless view = @viewCache[node.cid]
|
43
|
+
view = @viewCache[node.cid] = new Views[type]
|
44
|
+
model: node
|
45
|
+
settings: @settings
|
46
|
+
tree: @
|
47
|
+
|
48
|
+
return view
|
49
|
+
|
50
|
+
toArray: =>
|
51
|
+
@root.toArray()
|
52
|
+
|
53
|
+
getDirectory: (directoryPath) =>
|
54
|
+
@root.getDirectory(directoryPath)
|
55
|
+
|
56
|
+
getFile: (filePath) =>
|
57
|
+
@root.getFile(filePath)
|
58
|
+
|
59
|
+
toAscii: =>
|
60
|
+
'\n' + @root.toAscii()
|
61
|
+
|
62
|
+
getViewFromClick: (e) =>
|
63
|
+
e.stopPropagation()
|
64
|
+
|
65
|
+
cid = $(e.currentTarget).data('cid')
|
66
|
+
|
67
|
+
return @viewCache[cid]
|
68
|
+
|
69
|
+
_openDirectory: (e) =>
|
70
|
+
e.stopPropagation()
|
71
|
+
|
72
|
+
view = @getViewFromClick(e)
|
73
|
+
|
74
|
+
view.toggleOpen()
|
75
|
+
|
76
|
+
_openFile: (e) =>
|
77
|
+
view = @getViewFromClick(e)
|
78
|
+
|
79
|
+
@trigger 'openFile', e, view.model
|
80
|
+
|
81
|
+
render: =>
|
82
|
+
@root.collection.each (node) =>
|
83
|
+
view = @findOrCreateView(node)
|
84
|
+
|
85
|
+
@$el.append view.render().$el
|
86
|
+
|
87
|
+
return @
|
@@ -1 +1,2 @@
|
|
1
|
-
#= require ./bone_tree/
|
1
|
+
#= require ./bone_tree/namespace
|
2
|
+
#= require_tree ./bone_tree
|
@@ -3,44 +3,6 @@
|
|
3
3
|
|
4
4
|
$node_height: 20px
|
5
5
|
|
6
|
-
.filetree_context_menu
|
7
|
-
@include global-reset
|
8
|
-
|
9
|
-
+border-radius(3px)
|
10
|
-
+box-shadow(rgba(0, 0, 0, 0.4) 0 2px 10px)
|
11
|
-
|
12
|
-
background-color: #fff
|
13
|
-
border: 1px solid rgba(0, 0, 0, 0.3)
|
14
|
-
cursor: pointer
|
15
|
-
display: none
|
16
|
-
font-weight: 500
|
17
|
-
position: absolute
|
18
|
-
width: 100px
|
19
|
-
|
20
|
-
hr
|
21
|
-
border: 0
|
22
|
-
border-top: 1px solid rgba(0, 0, 0, 0.15)
|
23
|
-
height: 1px
|
24
|
-
margin: 0
|
25
|
-
|
26
|
-
li
|
27
|
-
margin: 0.25em 0
|
28
|
-
padding: 0 0.5em
|
29
|
-
|
30
|
-
&:hover
|
31
|
-
background-color: #1084CE
|
32
|
-
color: white
|
33
|
-
|
34
|
-
.rename
|
35
|
-
background: #fff url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAACjSURBVDjL7ZNBCsIwEEVz1mwTo1YjiHdIqyWgFBGPonWTC8T2BjlE4JsUwU0ILe7ExUtgPvNmNkMAkG8gPyAwxiAHYwxKKUgpk/kg8N5n4Zwn6865j4CVLXj1AA//rArsW4hAzCil4wTFsUdx6rBuLLaXJ+aH+zTBqukDFpuzxe5qsagnCIbV32vHybF5Wd/GC3JkBfHJEZu11hBCJHPyvwXyAt6tONifnq6xAAAAAElFTkSuQmCC') no-repeat
|
36
|
-
background-position: 4px 3px
|
37
|
-
padding-left: 24px
|
38
|
-
|
39
|
-
.delete
|
40
|
-
background: #fff url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJdSURBVDjLpZP7S1NhGMf9W7YfogSJboSEUVCY8zJ31trcps6zTI9bLGJpjp1hmkGNxVz4Q6ildtXKXzJNbJRaRmrXoeWx8tJOTWptnrNryre5YCYuI3rh+8vL+/m8PA/PkwIg5X+y5mJWrxfOUBXm91QZM6UluUmthntHqplxUml2lciF6wrmdHriI0Wx3xw2hAediLwZRWRkCPzdDswaSvGqkGCfq8VEUsEyPF1O8Qu3O7A09RbRvjuIttsRbT6HHzebsDjcB4/JgFFlNv9MnkmsEszodIIY7Oaut2OJcSF68Qx8dgv8tmqEL1gQaaARtp5A+N4NzB0lMXxon/uxbI8gIYjB9HytGYuusfiPIQcN71kjgnW6VeFOkgh3XcHLvAwMSDPohOADdYQJdF1FtLMZPmslvhZJk2ahkgRvq4HHUoWHRDqTEDDl2mDkfheiDgt8pw340/EocuClCuFvboQzb0cwIZgki4KhzlaE6w0InipbVzBfqoK/qRH94i0rgokSFeO11iBkp8EdV8cfJo0yD75aE2ZNRvSJ0lZKcBXLaUYmQrCzDT6tDN5SyRqYlWeDLZAg0H4JQ+Jt6M3atNLE10VSwQsN4Z6r0CBwqzXesHmV+BeoyAUri8EyMfi2FowXS5dhd7doo2DVII0V5BAjigP89GEVAtda8b2ehodU4rNaAW+dGfzlFkyo89GTlcrHYCLpKD+V7yeeHNzLjkp24Uu1Ed6G8/F8qjqGRzlbl2H2dzjpMg1KdwsHxOlmJ7GTeZC/nesXbeZ6c9OYnuxUc3fmBuFft/Ff8xMd0s65SXIb/gAAAABJRU5ErkJggg==') no-repeat
|
41
|
-
background-position: 4px 3px
|
42
|
-
padding-left: 24px
|
43
|
-
|
44
6
|
.tree
|
45
7
|
@include global-reset
|
46
8
|
|
@@ -0,0 +1,26 @@
|
|
1
|
+
describe 'BoneTree.Models.Directory', ->
|
2
|
+
it 'should be able to visualize the tree structure with Ascii characters', ->
|
3
|
+
tree = new BoneTree.Views.Tree
|
4
|
+
|
5
|
+
tree.add('src/main.coffee', { description: 'Entry point' })
|
6
|
+
tree.add('src/player.coffee', { description: 'The hero' })
|
7
|
+
tree.add('src/enemy.coffee', { description: 'The baddy' })
|
8
|
+
|
9
|
+
expect(tree.toAscii()).toEqual """
|
10
|
+
|
11
|
+
+
|
12
|
+
+src
|
13
|
+
-enemy.coffee
|
14
|
+
-main.coffee
|
15
|
+
-player.coffee
|
16
|
+
"""
|
17
|
+
|
18
|
+
it 'should be able to return all files it contains', ->
|
19
|
+
tree = new BoneTree.Views.Tree
|
20
|
+
|
21
|
+
tree.add('src/main.coffee', { description: 'Entry point' })
|
22
|
+
tree.add('src/player.coffee', { description: 'The hero' })
|
23
|
+
tree.add('src/enemy.coffee', { description: 'The baddy' })
|
24
|
+
|
25
|
+
# extra +1 in the length from the root directory
|
26
|
+
expect(tree.toArray().length).toEqual(5)
|
@@ -0,0 +1,12 @@
|
|
1
|
+
describe "sorting behavior", ->
|
2
|
+
it 'should sort collections correctly according to the comparator', ->
|
3
|
+
{Models} = BoneTree
|
4
|
+
|
5
|
+
nodes = new Models.Nodes
|
6
|
+
|
7
|
+
nodes.add(new Models.Node {path: 'aaa'})
|
8
|
+
nodes.add(new Models.Node {path: 'zzz'})
|
9
|
+
|
10
|
+
expect(nodes.sort().map (node) ->
|
11
|
+
node.name()
|
12
|
+
).toEqual(['aaa', 'zzz'])
|
@@ -1,8 +1,10 @@
|
|
1
|
+
src_dir: source/javascripts
|
1
2
|
src_files:
|
2
3
|
- "**/*"
|
3
|
-
|
4
|
-
-
|
4
|
+
asset_paths:
|
5
|
+
- vendor/javascripts
|
6
|
+
spec_dir: spec/javascripts
|
5
7
|
spec_files:
|
6
8
|
- "**/*_spec.*"
|
7
|
-
|
8
|
-
|
9
|
+
helpers:
|
10
|
+
- helpers/**/*
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bone_tree
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.9.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,8 +9,129 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
13
|
-
dependencies:
|
12
|
+
date: 2012-06-05 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: jquery-source
|
16
|
+
requirement: &70171854531820 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *70171854531820
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: cornerstone-source
|
27
|
+
requirement: &70171854531340 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
33
|
+
type: :runtime
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *70171854531340
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: underscore-source
|
38
|
+
requirement: &70171854530920 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0'
|
44
|
+
type: :runtime
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *70171854530920
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: jasmine-spec-extras
|
49
|
+
requirement: &70171854530300 !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
type: :development
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: *70171854530300
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: rake
|
60
|
+
requirement: &70171854529880 !ruby/object:Gem::Requirement
|
61
|
+
none: false
|
62
|
+
requirements:
|
63
|
+
- - ! '>='
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: '0'
|
66
|
+
type: :development
|
67
|
+
prerelease: false
|
68
|
+
version_requirements: *70171854529880
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rb-fsevent
|
71
|
+
requirement: &70171854529460 !ruby/object:Gem::Requirement
|
72
|
+
none: false
|
73
|
+
requirements:
|
74
|
+
- - ! '>='
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
77
|
+
type: :development
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: *70171854529460
|
80
|
+
- !ruby/object:Gem::Dependency
|
81
|
+
name: therubyracer
|
82
|
+
requirement: &70171854529020 !ruby/object:Gem::Requirement
|
83
|
+
none: false
|
84
|
+
requirements:
|
85
|
+
- - ! '>='
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: '0'
|
88
|
+
type: :development
|
89
|
+
prerelease: false
|
90
|
+
version_requirements: *70171854529020
|
91
|
+
- !ruby/object:Gem::Dependency
|
92
|
+
name: rack-codehighlighter
|
93
|
+
requirement: &70171854528600 !ruby/object:Gem::Requirement
|
94
|
+
none: false
|
95
|
+
requirements:
|
96
|
+
- - ! '>='
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
version: '0'
|
99
|
+
type: :development
|
100
|
+
prerelease: false
|
101
|
+
version_requirements: *70171854528600
|
102
|
+
- !ruby/object:Gem::Dependency
|
103
|
+
name: haml-coderay
|
104
|
+
requirement: &70171854528180 !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
110
|
+
type: :development
|
111
|
+
prerelease: false
|
112
|
+
version_requirements: *70171854528180
|
113
|
+
- !ruby/object:Gem::Dependency
|
114
|
+
name: coffee-filter
|
115
|
+
requirement: &70171854527700 !ruby/object:Gem::Requirement
|
116
|
+
none: false
|
117
|
+
requirements:
|
118
|
+
- - ! '>='
|
119
|
+
- !ruby/object:Gem::Version
|
120
|
+
version: '0'
|
121
|
+
type: :development
|
122
|
+
prerelease: false
|
123
|
+
version_requirements: *70171854527700
|
124
|
+
- !ruby/object:Gem::Dependency
|
125
|
+
name: jasmine
|
126
|
+
requirement: &70171854527260 !ruby/object:Gem::Requirement
|
127
|
+
none: false
|
128
|
+
requirements:
|
129
|
+
- - ! '>='
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: *70171854527260
|
14
135
|
description: This is a filetree, written with Backbone. It is meant to be tree that
|
15
136
|
will update your file nodes live and sort them when the node state is changed.
|
16
137
|
email:
|
@@ -21,57 +142,40 @@ extra_rdoc_files: []
|
|
21
142
|
files:
|
22
143
|
- .gitignore
|
23
144
|
- Gemfile
|
24
|
-
- Gemfile.lock
|
25
145
|
- Guardfile
|
26
146
|
- README
|
27
147
|
- Rakefile
|
28
148
|
- bone_tree.gemspec
|
29
149
|
- config.rb
|
30
150
|
- config.ru
|
31
|
-
- docs/index.html
|
32
|
-
- docs/resources/base.css
|
33
|
-
- docs/resources/index.css
|
34
|
-
- docs/resources/module.css
|
35
|
-
- docs/source/javascripts/bone_tree/_namespace.js.html
|
36
|
-
- docs/source/javascripts/bone_tree/models/_directory.js.html
|
37
|
-
- docs/source/javascripts/bone_tree/models/_file.js.html
|
38
|
-
- docs/source/javascripts/bone_tree/models/_nodes.js.html
|
39
|
-
- docs/source/javascripts/bone_tree/models/_settings.js.html
|
40
|
-
- docs/source/javascripts/bone_tree/views/_directory.js.html
|
41
|
-
- docs/source/javascripts/bone_tree/views/_file.js.html
|
42
|
-
- docs/source/javascripts/bone_tree/views/_menu.js.html
|
43
|
-
- docs/source/javascripts/bone_tree/views/_tree.js.html
|
44
151
|
- lib/assets/javascripts/bone_tree.js
|
152
|
+
- lib/assets/stylesheets/bone_tree.css
|
45
153
|
- lib/bone_tree.rb
|
46
|
-
- lib/
|
154
|
+
- lib/bone_tree/rails.rb
|
155
|
+
- lib/bone_tree/sprockets.rb
|
156
|
+
- lib/bone_tree/version.rb
|
47
157
|
- source/images/bonetree.png
|
48
158
|
- source/images/crushed_bone.png
|
49
159
|
- source/index.html.haml
|
50
|
-
- source/javascripts/
|
51
|
-
- source/javascripts/_jquery.min.js
|
52
|
-
- source/javascripts/_underscore.js
|
160
|
+
- source/javascripts/backbone.js
|
53
161
|
- source/javascripts/bone_tree.js.coffee
|
54
|
-
- source/javascripts/bone_tree/
|
55
|
-
- source/javascripts/bone_tree/models/
|
56
|
-
- source/javascripts/bone_tree/models/
|
57
|
-
- source/javascripts/bone_tree/models/
|
58
|
-
- source/javascripts/bone_tree/
|
59
|
-
- source/javascripts/bone_tree/views/
|
60
|
-
- source/javascripts/bone_tree/views/
|
61
|
-
- source/javascripts/bone_tree/views/
|
62
|
-
- source/javascripts/bone_tree/views/_tree.js.coffee
|
162
|
+
- source/javascripts/bone_tree/models/directory.js.coffee
|
163
|
+
- source/javascripts/bone_tree/models/file.js.coffee
|
164
|
+
- source/javascripts/bone_tree/models/node.js.coffee
|
165
|
+
- source/javascripts/bone_tree/models/settings.js.coffee
|
166
|
+
- source/javascripts/bone_tree/namespace.js.coffee
|
167
|
+
- source/javascripts/bone_tree/views/directory.js.coffee
|
168
|
+
- source/javascripts/bone_tree/views/file.js.coffee
|
169
|
+
- source/javascripts/bone_tree/views/tree.js.coffee
|
63
170
|
- source/layout.haml
|
64
171
|
- source/stylesheets/bone_tree.css.sass
|
65
172
|
- source/stylesheets/bone_tree_repo.css.sass
|
66
|
-
- spec/javascripts/
|
67
|
-
- spec/javascripts/file_view_spec.coffee
|
173
|
+
- spec/javascripts/directory_spec.coffee
|
68
174
|
- spec/javascripts/helpers/spec_helper.coffee
|
69
|
-
- spec/javascripts/
|
70
|
-
- spec/javascripts/nodes_spec.coffee
|
175
|
+
- spec/javascripts/sorting_spec.coffee
|
71
176
|
- spec/javascripts/support/jasmine.yml
|
72
177
|
- spec/javascripts/support/jasmine_config.rb
|
73
178
|
- spec/javascripts/support/jasmine_runner.rb
|
74
|
-
- spec/javascripts/tree_view_spec.coffee
|
75
179
|
homepage: http://mdiebolt.github.com/bone_tree
|
76
180
|
licenses: []
|
77
181
|
post_install_message:
|
@@ -86,13 +190,16 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
86
190
|
version: '0'
|
87
191
|
segments:
|
88
192
|
- 0
|
89
|
-
hash: -
|
193
|
+
hash: -769684106227080348
|
90
194
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
91
195
|
none: false
|
92
196
|
requirements:
|
93
197
|
- - ! '>='
|
94
198
|
- !ruby/object:Gem::Version
|
95
199
|
version: '0'
|
200
|
+
segments:
|
201
|
+
- 0
|
202
|
+
hash: -769684106227080348
|
96
203
|
requirements: []
|
97
204
|
rubyforge_project: bone_tree
|
98
205
|
rubygems_version: 1.8.10
|