• R/O
  • SSH
  • HTTPS

tsubuyakiticker: コミット


コミットメタ情報

リビジョン17 (tree)
日時2013-03-24 00:55:33
作者mshio

ログメッセージ

fix bugs: autoReload and so on

変更サマリ

差分

--- tsubuyakiticker/src/tickerDomWriter.coffee (revision 16)
+++ tsubuyakiticker/src/tickerDomWriter.coffee (revision 17)
@@ -6,18 +6,19 @@
66 # - @target : target DIV element.
77 # - _public : a public object to bind variables and
88 # functions or to get them.
9- constructor: (@target, _public) ->
10- @_ = _public
11- @setting = @_.setting
12- @tickerData = @_.tickerData
9+ constructor: (@target, @_public) ->
10+ @setting = @_public.setting
11+ @tickerData = @_public.tickerData
1312
1413 # clean up child nodes of the target DIV element.
15- cleanup: ->
16- nds = @target.childNodes
17- for nd in nds
14+ cleanupScript: ->
15+ for nd in @target.childNodes
1816 nm = if nd then nd.tagName else null
1917 @target.removeChild nd if nm and (nm is 'script' or nm is 'SCRIPT')
2018
19+ cleanupAllTweetElement: ->
20+ nds = @target.childNodes[0].innerHTML = ''
21+
2122 generateList: (errorMessage) ->
2223 nodes = this._listNodes errorMessage
2324 d = @target.childNodes[0]
@@ -26,7 +27,7 @@
2627 else
2728 for node in nodes
2829 d.appendChild node
29- @tickerData.animation = new TickerAnimation d, @target, @_
30+ @tickerData.animation = new TickerAnimation d, @target, @_public
3031
3132 _listNodes: (errorMessage) ->
3233 nodes = null
@@ -33,8 +34,8 @@
3334 if errorMessage
3435 nodes = this._errorLine errorMessage
3536 else
36- showUser = checkSwitch @setting.displayUserID
37- showDate = checkSwitch @setting.displayDateTime
37+ showUser = @setting.displayUserID
38+ showDate = @setting.displayDateTime
3839 list = this._unitedList()
3940 if list.length > 0
4041 nodes = this.makeupTweetLine list, showDate, showUser
--- tsubuyakiticker/src/tickerSetting.coffee (revision 16)
+++ tsubuyakiticker/src/tickerSetting.coffee (revision 17)
@@ -1,6 +1,6 @@
11 class TickerSetting
22 constructor: (userSetting) ->
3- s = this._mergeUserSetting userSetting
3+ s = this._convSwitchIntoBool this._mergeUserSetting userSetting
44 this[k] = v for k, v of s
55
66 _mergeUserSetting: (setting) ->
@@ -8,10 +8,23 @@
88 setting[k] = setting[k] || s[k] for k, v of s
99 return setting
1010
11+ _convSwitchIntoBool: (setting) ->
12+ bool = (value) ->
13+ return value if typeof value is 'boolean'
14+ v = value.toLowerCase() if typeof value is 'string'
15+ if v and (v is 'on' or v is 'true')
16+ return true
17+ return false
18+
19+ switchKeys = ['displayUserID', 'displayDateTime', 'autoReload']
20+ for key in switchKeys
21+ setting[key] = bool setting[key]
22+ return setting
23+
1124 TickerSetting.defaultSetting =
12- users: null
25+ users: null
1326 numberOfRecord: 5
14- interval: 100
27+ interval: 100
1528 movingQuantity: 7
1629 dateFormat: 'YYYY/MM/DD hh:mm'
1730 displayUserID: 'on'
--- tsubuyakiticker/src/tweetCollector.coffee (revision 16)
+++ tsubuyakiticker/src/tweetCollector.coffee (revision 17)
@@ -1,21 +1,21 @@
11 class TweetCollector
2- constructor: (@target, @_) ->
2+ constructor: (@target, @_pub) ->
33
44 collect: ->
55 i = -1
6- num = @_.setting.numberOfRecord
7- for user in @_.tickerData.userList
6+ num = @_pub.setting.numberOfRecord
7+ for user in @_pub.tickerData.userList
88 this.setCallerAndCallback ++i, num
99
1010 setCallerAndCallback: (index, numberOfRecord) ->
1111 c = this._numberCode index
12- _ = @_
13- @_.tickerData.failure[c] = false
14- @_.callbacks[c] = (->
12+ _ = @_pub
13+ @_pub.tickerData.failure[c] = false
14+ @_pub.callbacks[c] = (->
1515 p = c
1616 return (r) ->
1717 _.tweets r, p)();
18- this.setCaller @_.tickerData.userList[index], numberOfRecord, c
18+ this.setCaller @_pub.tickerData.userList[index], numberOfRecord, c
1919
2020 setCaller: (account, numOfRec, numCode) ->
2121 s = document.createElement 'script'
--- tsubuyakiticker/src/tickerAnimation.coffee (revision 16)
+++ tsubuyakiticker/src/tickerAnimation.coffee (revision 17)
@@ -1,7 +1,8 @@
11 class TickerAnimation
2- constructor: (@span, @target, @_) ->
3- @interval = @_.setting.interval
4- @movingQuantity = @_.setting.movingQuantity
2+ constructor: (@span, @target, @_public) ->
3+ @setting = @_public.setting
4+ @interval = @setting.interval
5+ @movingQuantity = @setting.movingQuantity
56 @speeddown = 0
67 @prepare = false
78 @timer = new TickerTimer this, 'move', @interval
@@ -11,14 +12,16 @@
1112 w = @span.offsetWidth
1213 @speeddown += @speeddown if @speeddown != 0
1314 v = @movingQuantity - @speeddown
14- auto = checkSwitch @_.setting.autoReload
15+ auto = @setting.autoReload
1516 if v > 0
1617 x -= v
1718 if x < -w
1819 x = if @target.style.width then parseInt(@target.style.width) else @target.offsetWidth
1920 if @span.prepare
21+ @_public.tickerDomWriter.cleanupAllTweetElement()
2022 @span.appendChild node for node in @span.prepare
2123 @span.prepare = false
24+ @prepare = false
2225 else if auto and ! @prepare and x < - w + 250
2326 this.getTweetsInBackground()
2427 @span.style.left = x + (@span.measure || 'px')
@@ -27,9 +30,10 @@
2730 @timer.abort()
2831
2932 getTweetsInBackground: ->
30- l = @_.tickerData.userList
31- n = @_.setting.numberOfRecord
33+ l = @_public.tickerData.userList
34+ n = @setting.numberOfRecord
3235 @prepare = true
33- c = new TweetCollector @target, @_
34- c.setCaller l[i], n, c._numberCode i for i in [0..l.length]
35- new ListManager l.length
36+ @_public.tickerDomWriter.cleanupScript()
37+ c = new TweetCollector @target, @_public
38+ c.setCaller l[i], n, c._numberCode i for i in [0...l.length]
39+ new ListManager l.length, @_public
--- tsubuyakiticker/src/tsubuyakiTicker.coffee (revision 16)
+++ tsubuyakiticker/src/tsubuyakiTicker.coffee (revision 17)
@@ -1,7 +1,7 @@
11 _pub = null
22
33 tweets = (result, code) ->
4- d = _pub.tickerData
4+ d = window.TsubuyakiTicker.tickerData
55 r = result.results
66 if r.length > 0
77 d.tweetList[r[0].from_user] = []
@@ -14,9 +14,6 @@
1414 else
1515 d.failure[code] = true
1616
17-checkSwitch = (value) ->
18- value.toLowerCase() isnt 'off'
19-
2017 run = ->
2118 browser = new Browser()
2219
--- tsubuyakiticker/src/listManager.coffee (revision 16)
+++ tsubuyakiticker/src/listManager.coffee (revision 17)
@@ -33,5 +33,5 @@
3333 else
3434 @writer.generateList @setting.responseFailureMessage
3535 else
36- @writer.cleanup()
36+ @writer.cleanupScript()
3737 @writer.generateList null
--- tsubuyakiticker/src/tickerDomBuilder.coffee (revision 16)
+++ tsubuyakiticker/src/tickerDomBuilder.coffee (revision 17)
@@ -1,15 +1,14 @@
1-###
2-TickerDomBuilder
3---------------------------------------------------
4-A class to make up a DIV element for the tsubuyaki ticker.
5-
6-[usage]
7-STEP 1. get an instance.
8- b = new TickerDomBuilder element, browser
9-
10-STEP 2. add a span with the no-wrap style
11- b.addNoWrapElement()
12-###
1+# TickerDomBuilder
2+# --------------------------------------------------
3+# A class to make up a DIV element for the tsubuyaki ticker.
4+#
5+# [usage]
6+# STEP 1. get an instance.
7+# b = new TickerDomBuilder element, browser
8+#
9+# STEP 2. add a span with the no-wrap style
10+# b.addNoWrapElement()
11+#
1312 class TickerDomBuilder
1413 constructor: (@target, @browser) ->
1514 @target.style.overflow = 'hidden'
--- tsubuyakiticker/src/tweet.coffee (revision 16)
+++ tsubuyakiticker/src/tweet.coffee (revision 17)
@@ -1,6 +1,6 @@
11 class Tweet
22 constructor: (@user, text, @id, @date, @lang) ->
3- @text = this._linkedText(text)
3+ @text = (this._linkedText text).replace /[\r\n]/g, " "
44
55 _linkedText: (text) ->
66 keys = []
@@ -8,7 +8,7 @@
88 replacer = new TweetTextReplacer
99 for k in keys
1010 text = replacer[k](text)
11- text
11+ return text
1212
1313
1414 class TweetTextReplacer
@@ -21,25 +21,15 @@
2121 link: (text) ->
2222 text.replace @reg['link'], this.linkTag('$1', '$1')
2323
24- account0: (text) ->
25- href = "http://twitter.com/$2"
26- text.replace @reg['account0'], "$1#{this.linkTag(href, '$2')}"
24+ account: (text) ->
25+ href = "http://twitter.com/$3"
26+ text.replace @reg['account'], "$1#{this.linkTag(href, '$2')}"
2727
28- account1: (text) ->
29- href = "http://twitter.com/$1"
30- text.replace @reg['account1'], this.linkTag(href, '$1')
31-
32- hash0: (text) ->
28+ hash: (text) ->
3329 href = "http://twitter.com/search?q=$2"
34- text.replace @reg['hash0'], "$1#{this.linkTag(href, '$2')}"
30+ text.replace @reg['hash'], "$1#{this.linkTag(href, '$2')}"
3531
36- hash1: (text) ->
37- href = "http://twitter.com/search?q=$1"
38- text.replace @reg['hash1'], this.linkTag(href, '$1')
39-
4032 TweetTextReplacer.REGEXPS =
4133 link: /(http:\/\/[0-9A-Za-z\.\/_\?&\~\-\=\#\:%]+)/g
42- account0: /(\s|[^a-zA-Z0-9])(@[a-zA-Z0-9_]+)/g
43- account1: /^(@[a-zA-Z0-9_]+)/
44- hash0: /(\s)(\#[a-zA-Z0-9_]+)/g
45- hash1: /^(\#[a-zA-Z0-9_]+)/
34+ account: /(^|\s|[^a-zA-Z0-9])(@([a-zA-Z0-9_]+))/g
35+ hash: /(^|\s)(\#[a-zA-Z0-9_]+)/g
旧リポジトリブラウザで表示