Skip to content

Commit

Permalink
Fix multi selections
Browse files Browse the repository at this point in the history
  • Loading branch information
minodisk committed Mar 26, 2015
1 parent 90d2b0b commit f5ffb96
Show file tree
Hide file tree
Showing 4 changed files with 47 additions and 31 deletions.
15 changes: 12 additions & 3 deletions gulpfile.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ rename = require 'gulp-rename'
{server: karma} = require 'karma'
BowerWebpackPlugin = require 'bower-webpack-plugin'
fs = require 'fs'
{join} = require 'path'
{inc} = require 'semver'

KARMA_CONF = "#{__dirname}/karma.conf.coffee"
Expand Down Expand Up @@ -34,11 +35,13 @@ gulp.task 'startBuild', ->
watch: true
colors: true
entry:
content: 'src/content/main'
bacground: 'src/background/main'
content: './src/content/main'
background: './src/background/main'
output:
path: 'dest'
path: join __dirname, 'dest'
filename: 'slack-copier-[name].js'
resolve:
extensions: ['', '.js', '.coffee']
module:
loaders: [
test: /\.coffee$/
Expand All @@ -47,6 +50,12 @@ gulp.task 'startBuild', ->
plugins: [
new BowerWebpackPlugin
]
, (err, stats) ->
throw new PluginError 'webpack', err if err?
console.log stats.toString
colors: true
chunkModules: false
return

gulp.task 'release', ->
pkg = JSON.parse fs.readFileSync PACKAGE_JSON
Expand Down
4 changes: 2 additions & 2 deletions src/content/copier.coffee
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{getSelectedContents} = require './selection.coffee'
{getSelectedItems} = require './selection.coffee'
{markdown} = require './parser.coffee'

module.exports =

markdown: -> markdown getSelectedContents()
markdown: -> markdown getSelectedItems()
31 changes: 19 additions & 12 deletions src/content/parser.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -10,18 +10,25 @@ class Parser
token.toMarkdown()

@parse: ($container) ->
$messages = $container.find '.message'

if $messages.length is 0
$container
.parents '.message'
.toArray()
.reverse()
.forEach (el) -> $messages = $messages.add el
return if $messages.length is 0
root = @tokenizeMessages $messages
root.filter $container
return root
$messages = $()

$container
.each (i, el) ->
$el = $ el
if ($message = $el.filter '.message').length isnt 0
$messages = $messages.add $message
return
if ($message = $el.find '.message').length isnt 0
$messages = $messages.add $message
return
if ($message = $el.closest '.message').length isnt 0
$messages = $messages.add $message
return

return if $messages.length is 0
root = @tokenizeMessages $messages
root.filter $container
return root

@tokenizeMessages $messages

Expand Down
28 changes: 14 additions & 14 deletions src/content/selection.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -3,22 +3,22 @@ $ = require 'jquery'
module.exports =
class Selection

@getSelectedContents: =>
@getSelectedItems: =>
selection = window.getSelection()
len = selection.rangeCount
$contents = $()
$items = $()
for i in [0...len] by 1
range = selection.getRangeAt i
$contents = $contents.add @walk selection, range.commonAncestorContainer
$contents
$items = $items.add @walk selection, range.commonAncestorContainer
$items

@walk: (selection, container) =>
$container = $ container
$contents = $()
if selection.containsNode container
console.log '--------'
console.log container
return $contents.add $container
$container.contents().each (i, content) =>
$contents = $contents.add @walk selection, content
$contents
@walk: (selection, parent) =>
$parent = $ parent
$items = $()
if selection.containsNode parent
return $items.add $parent
$parent
.contents()
.each (i, content) =>
$items = $items.add @walk selection, content
$items

0 comments on commit f5ffb96

Please sign in to comment.