Skip to content
Toggle navigation
Toggle navigation
This project
Loading...
Sign in
brainfood
/
rivets
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Graphs
Network
Create a new issue
Commits
Issue Boards
Files
Commits
Network
Compare
Branches
Tags
09082da7
authored
2013-06-04 18:04:32 -0700
by
Michael Richards
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
Build 0.5.7.
1 parent
4e02f611
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
9 additions
and
9 deletions
component.json
dist/rivets.js
dist/rivets.min.js
package.json
src/rivets.coffee
component.json
View file @
09082da
...
...
@@ -2,7 +2,7 @@
"name"
:
"rivets"
,
"repo"
:
"mikeric/rivets"
,
"description"
:
"Declarative data binding facility."
,
"version"
:
"0.5.
6
"
,
"version"
:
"0.5.
7
"
,
"keywords"
:
[
"data binding"
,
"templating"
],
"scripts"
:
[
"dist/rivets.js"
],
"main"
:
"dist/rivets.js"
,
...
...
dist/rivets.js
View file @
09082da
// Rivets.js
// version: 0.5.
6
// version: 0.5.
7
// author: Michael Richards
// license: MIT
(
function
()
{
...
...
@@ -636,13 +636,13 @@
unless
:
{
block
:
true
,
bind
:
function
(
el
)
{
return
r
ivets
.
binders
[
"if"
].
bind
.
call
(
this
,
el
);
return
R
ivets
.
binders
[
"if"
].
bind
.
call
(
this
,
el
);
},
unbind
:
function
()
{
return
r
ivets
.
binders
[
"if"
].
unbind
.
call
(
this
);
return
R
ivets
.
binders
[
"if"
].
unbind
.
call
(
this
);
},
routine
:
function
(
el
,
value
)
{
return
r
ivets
.
binders
[
"if"
].
routine
.
call
(
this
,
el
,
!
value
);
return
R
ivets
.
binders
[
"if"
].
routine
.
call
(
this
,
el
,
!
value
);
}
},
"on-*"
:
{
...
...
dist/rivets.min.js
View file @
09082da
// Rivets.js
// version: 0.5.
6
// version: 0.5.
7
// author: Michael Richards
// license: MIT
(
function
(){
var
t
,
i
=
function
(
t
,
i
){
return
function
(){
return
t
.
apply
(
i
,
arguments
)}},
e
=
[].
slice
,
n
=
[].
indexOf
||
function
(
t
){
for
(
var
i
=
0
,
e
=
this
.
length
;
e
>
i
;
i
++
)
if
(
i
in
this
&&
this
[
i
]
===
t
)
return
i
;
return
-
1
};
t
=
{},
String
.
prototype
.
trim
||
(
String
.
prototype
.
trim
=
function
(){
return
this
.
replace
(
/^
\s
+|
\s
+$/g
,
""
)}),
t
.
Binding
=
function
(){
function
n
(
t
,
e
,
n
,
s
,
r
,
h
){
var
o
,
l
,
u
,
d
;
if
(
this
.
view
=
t
,
this
.
el
=
e
,
this
.
type
=
n
,
this
.
key
=
s
,
this
.
keypath
=
r
,
this
.
options
=
null
!=
h
?
h
:{},
this
.
update
=
i
(
this
.
update
,
this
),
this
.
unbind
=
i
(
this
.
unbind
,
this
),
this
.
bind
=
i
(
this
.
bind
,
this
),
this
.
publish
=
i
(
this
.
publish
,
this
),
this
.
sync
=
i
(
this
.
sync
,
this
),
this
.
set
=
i
(
this
.
set
,
this
),
this
.
eventHandler
=
i
(
this
.
eventHandler
,
this
),
this
.
formattedValue
=
i
(
this
.
formattedValue
,
this
),
!
(
this
.
binder
=
this
.
view
.
binders
[
n
])){
d
=
this
.
view
.
binders
;
for
(
o
in
d
)
u
=
d
[
o
],
"*"
!==
o
&&-
1
!==
o
.
indexOf
(
"*"
)
&&
(
l
=
RegExp
(
"^"
+
o
.
replace
(
"*"
,
".+"
)
+
"$"
),
l
.
test
(
n
)
&&
(
this
.
binder
=
u
,
this
.
args
=
RegExp
(
"^"
+
o
.
replace
(
"*"
,
"(.+)"
)
+
"$"
).
exec
(
n
),
this
.
args
.
shift
()))}
this
.
binder
||
(
this
.
binder
=
this
.
view
.
binders
[
"*"
]),
this
.
binder
instanceof
Function
&&
(
this
.
binder
=
{
routine
:
this
.
binder
}),
this
.
formatters
=
this
.
options
.
formatters
||
[],
this
.
model
=
this
.
key
?
this
.
view
.
models
[
this
.
key
]:
this
.
view
.
models
}
return
n
.
prototype
.
formattedValue
=
function
(
t
){
var
i
,
n
,
s
,
r
,
h
,
o
;
for
(
o
=
this
.
formatters
,
r
=
0
,
h
=
o
.
length
;
h
>
r
;
r
++
)
n
=
o
[
r
],
i
=
n
.
split
(
/
\s
+/
),
s
=
i
.
shift
(),
n
=
this
.
model
[
s
]
instanceof
Function
?
this
.
model
[
s
]:
this
.
view
.
formatters
[
s
],(
null
!=
n
?
n
.
read
:
void
0
)
instanceof
Function
?
t
=
n
.
read
.
apply
(
n
,[
t
].
concat
(
e
.
call
(
i
))):
n
instanceof
Function
&&
(
t
=
n
.
apply
(
null
,[
t
].
concat
(
e
.
call
(
i
))));
return
t
},
n
.
prototype
.
eventHandler
=
function
(
t
){
var
i
,
e
;
return
e
=
(
i
=
this
).
view
.
config
.
handler
,
function
(
n
){
return
e
.
call
(
t
,
this
,
n
,
i
)}},
n
.
prototype
.
set
=
function
(
t
){
var
i
;
return
t
=
t
instanceof
Function
&&!
this
.
binder
[
"function"
]?
this
.
formattedValue
(
t
.
call
(
this
.
model
)):
this
.
formattedValue
(
t
),
null
!=
(
i
=
this
.
binder
.
routine
)?
i
.
call
(
this
,
this
.
el
,
t
):
void
0
},
n
.
prototype
.
sync
=
function
(){
return
this
.
set
(
this
.
options
.
bypass
?
this
.
model
[
this
.
keypath
]:
this
.
view
.
config
.
adapter
.
read
(
this
.
model
,
this
.
keypath
))},
n
.
prototype
.
publish
=
function
(){
var
i
,
n
,
s
,
r
,
h
,
o
,
l
,
u
,
d
;
for
(
r
=
t
.
Util
.
getInputValue
(
this
.
el
),
l
=
this
.
formatters
.
slice
(
0
).
reverse
(),
h
=
0
,
o
=
l
.
length
;
o
>
h
;
h
++
)
n
=
l
[
h
],
i
=
n
.
split
(
/
\s
+/
),
s
=
i
.
shift
(),(
null
!=
(
u
=
this
.
view
.
formatters
[
s
])?
u
.
publish
:
void
0
)
&&
(
r
=
(
d
=
this
.
view
.
formatters
[
s
]).
publish
.
apply
(
d
,[
r
].
concat
(
e
.
call
(
i
))));
return
this
.
view
.
config
.
adapter
.
publish
(
this
.
model
,
this
.
keypath
,
r
)},
n
.
prototype
.
bind
=
function
(){
var
t
,
i
,
e
,
n
,
s
,
r
,
h
,
o
,
l
;
if
(
null
!=
(
r
=
this
.
binder
.
bind
)
&&
r
.
call
(
this
,
this
.
el
),
this
.
options
.
bypass
?
this
.
sync
():(
this
.
view
.
config
.
adapter
.
subscribe
(
this
.
model
,
this
.
keypath
,
this
.
sync
),
this
.
view
.
config
.
preloadData
&&
this
.
sync
()),
null
!=
(
h
=
this
.
options
.
dependencies
)?
h
.
length
:
void
0
){
for
(
o
=
this
.
options
.
dependencies
,
l
=
[],
n
=
0
,
s
=
o
.
length
;
s
>
n
;
n
++
)
t
=
o
[
n
],
/^
\.
/
.
test
(
t
)?(
e
=
this
.
model
,
i
=
t
.
substr
(
1
)):(
t
=
t
.
split
(
"."
),
e
=
this
.
view
.
models
[
t
.
shift
()],
i
=
t
.
join
(
"."
)),
l
.
push
(
this
.
view
.
config
.
adapter
.
subscribe
(
e
,
i
,
this
.
sync
));
return
l
}},
n
.
prototype
.
unbind
=
function
(){
var
t
,
i
,
e
,
n
,
s
,
r
,
h
,
o
,
l
;
if
(
null
!=
(
r
=
this
.
binder
.
unbind
)
&&
r
.
call
(
this
,
this
.
el
),
this
.
options
.
bypass
||
this
.
view
.
config
.
adapter
.
unsubscribe
(
this
.
model
,
this
.
keypath
,
this
.
sync
),
null
!=
(
h
=
this
.
options
.
dependencies
)?
h
.
length
:
void
0
){
for
(
o
=
this
.
options
.
dependencies
,
l
=
[],
n
=
0
,
s
=
o
.
length
;
s
>
n
;
n
++
)
t
=
o
[
n
],
/^
\.
/
.
test
(
t
)?(
e
=
this
.
model
,
i
=
t
.
substr
(
1
)):(
t
=
t
.
split
(
"."
),
e
=
this
.
view
.
models
[
t
.
shift
()],
i
=
t
.
join
(
"."
)),
l
.
push
(
this
.
view
.
config
.
adapter
.
unsubscribe
(
e
,
i
,
this
.
sync
));
return
l
}},
n
.
prototype
.
update
=
function
(){
return
this
.
unbind
(),
this
.
model
=
this
.
key
?
this
.
view
.
models
[
this
.
key
]:
this
.
view
.
models
,
this
.
bind
()},
n
}(),
t
.
View
=
function
(){
function
e
(
e
,
n
,
s
){
var
r
,
h
,
o
,
l
,
u
,
d
,
a
,
c
,
f
,
p
;
for
(
this
.
els
=
e
,
this
.
models
=
n
,
this
.
options
=
null
!=
s
?
s
:{},
this
.
update
=
i
(
this
.
update
,
this
),
this
.
publish
=
i
(
this
.
publish
,
this
),
this
.
sync
=
i
(
this
.
sync
,
this
),
this
.
unbind
=
i
(
this
.
unbind
,
this
),
this
.
bind
=
i
(
this
.
bind
,
this
),
this
.
select
=
i
(
this
.
select
,
this
),
this
.
build
=
i
(
this
.
build
,
this
),
this
.
bindingRegExp
=
i
(
this
.
bindingRegExp
,
this
),
this
.
els
.
jquery
||
this
.
els
instanceof
Array
||
(
this
.
els
=
[
this
.
els
]),
a
=
[
"config"
,
"binders"
,
"formatters"
],
u
=
0
,
d
=
a
.
length
;
d
>
u
;
u
++
){
if
(
h
=
a
[
u
],
this
[
h
]
=
{},
this
.
options
[
h
]){
c
=
this
.
options
[
h
];
for
(
r
in
c
)
o
=
c
[
r
],
this
[
h
][
r
]
=
o
}
f
=
t
[
h
];
for
(
r
in
f
)
o
=
f
[
r
],
null
==
(
p
=
(
l
=
this
[
h
])[
r
])
&&
(
l
[
r
]
=
o
)}
this
.
build
()}
return
e
.
prototype
.
bindingRegExp
=
function
(){
var
t
;
return
t
=
this
.
config
.
prefix
,
t
?
RegExp
(
"^data-"
+
t
+
"-"
):
/^data-/
},
e
.
prototype
.
build
=
function
(){
var
i
,
e
,
s
,
r
,
h
,
o
,
l
,
u
,
d
,
a
,
c
,
f
=
this
;
for
(
this
.
bindings
=
[],
h
=
[],
i
=
this
.
bindingRegExp
(),
r
=
function
(
e
){
var
s
,
r
,
o
,
l
,
u
,
d
,
a
,
c
,
p
,
b
,
v
,
g
,
m
,
y
,
w
,
k
,
x
,
E
,
j
,
N
,
U
,
V
,
B
,
Q
,
R
,
A
,
C
,
F
;
if
(
0
>
n
.
call
(
h
,
e
)){
for
(
R
=
e
.
attributes
,
j
=
0
,
V
=
R
.
length
;
V
>
j
;
j
++
)
if
(
s
=
R
[
j
],
i
.
test
(
s
.
name
)){
if
(
x
=
s
.
name
.
replace
(
i
,
""
),
!
(
o
=
f
.
binders
[
x
])){
A
=
f
.
binders
;
for
(
a
in
A
)
E
=
A
[
a
],
"*"
!==
a
&&-
1
!==
a
.
indexOf
(
"*"
)
&&
(
w
=
RegExp
(
"^"
+
a
.
replace
(
"*"
,
".+"
)
+
"$"
),
w
.
test
(
x
)
&&
(
o
=
E
))}
if
(
o
||
(
o
=
f
.
binders
[
"*"
]),
o
.
block
){
for
(
C
=
e
.
getElementsByTagName
(
"*"
),
N
=
0
,
B
=
C
.
length
;
B
>
N
;
N
++
)
b
=
C
[
N
],
h
.
push
(
b
);
r
=
[
s
]}}
for
(
F
=
r
||
e
.
attributes
,
U
=
0
,
Q
=
F
.
length
;
Q
>
U
;
U
++
)
s
=
F
[
U
],
i
.
test
(
s
.
name
)
&&
(
v
=
{},
x
=
s
.
name
.
replace
(
i
,
""
),
y
=
function
(){
var
t
,
i
,
e
,
n
;
for
(
e
=
s
.
value
.
split
(
"|"
),
n
=
[],
t
=
0
,
i
=
e
.
length
;
i
>
t
;
t
++
)
m
=
e
[
t
],
n
.
push
(
m
.
trim
());
return
n
}(),
l
=
function
(){
var
t
,
i
,
e
,
n
;
for
(
e
=
y
.
shift
().
split
(
"<"
),
n
=
[],
t
=
0
,
i
=
e
.
length
;
i
>
t
;
t
++
)
u
=
e
[
t
],
n
.
push
(
u
.
trim
());
return
n
}(),
g
=
l
.
shift
(),
k
=
g
.
split
(
/
\.
|:/
),
v
.
formatters
=
y
,
v
.
bypass
=-
1
!==
g
.
indexOf
(
":"
),
k
[
0
]?
c
=
k
.
shift
():(
c
=
null
,
k
.
shift
()),
p
=
k
.
join
(
"."
),
c
&&
null
==
f
.
models
[
c
]
||
((
d
=
l
.
shift
())
&&
(
v
.
dependencies
=
d
.
split
(
/
\s
+/
)),
f
.
bindings
.
push
(
new
t
.
Binding
(
f
,
e
,
x
,
c
,
p
,
v
))));
r
&&
(
r
=
null
)}},
a
=
this
.
els
,
o
=
0
,
u
=
a
.
length
;
u
>
o
;
o
++
)
for
(
e
=
a
[
o
],
r
(
e
),
c
=
e
.
getElementsByTagName
(
"*"
),
l
=
0
,
d
=
c
.
length
;
d
>
l
;
l
++
)
s
=
c
[
l
],
null
!=
s
.
attributes
&&
r
(
s
)},
e
.
prototype
.
select
=
function
(
t
){
var
i
,
e
,
n
,
s
,
r
;
for
(
s
=
this
.
bindings
,
r
=
[],
e
=
0
,
n
=
s
.
length
;
n
>
e
;
e
++
)
i
=
s
[
e
],
t
(
i
)
&&
r
.
push
(
i
);
return
r
},
e
.
prototype
.
bind
=
function
(){
var
t
,
i
,
e
,
n
,
s
;
for
(
n
=
this
.
bindings
,
s
=
[],
i
=
0
,
e
=
n
.
length
;
e
>
i
;
i
++
)
t
=
n
[
i
],
s
.
push
(
t
.
bind
());
return
s
},
e
.
prototype
.
unbind
=
function
(){
var
t
,
i
,
e
,
n
,
s
;
for
(
n
=
this
.
bindings
,
s
=
[],
i
=
0
,
e
=
n
.
length
;
e
>
i
;
i
++
)
t
=
n
[
i
],
s
.
push
(
t
.
unbind
());
return
s
},
e
.
prototype
.
sync
=
function
(){
var
t
,
i
,
e
,
n
,
s
;
for
(
n
=
this
.
bindings
,
s
=
[],
i
=
0
,
e
=
n
.
length
;
e
>
i
;
i
++
)
t
=
n
[
i
],
s
.
push
(
t
.
sync
());
return
s
},
e
.
prototype
.
publish
=
function
(){
var
t
,
i
,
e
,
n
,
s
;
for
(
n
=
this
.
select
(
function
(
t
){
return
t
.
binder
.
publishes
}),
s
=
[],
i
=
0
,
e
=
n
.
length
;
e
>
i
;
i
++
)
t
=
n
[
i
],
s
.
push
(
t
.
publish
());
return
s
},
e
.
prototype
.
update
=
function
(
t
){
var
i
,
e
,
n
,
s
;
null
==
t
&&
(
t
=
{}),
s
=
[];
for
(
e
in
t
)
n
=
t
[
e
],
this
.
models
[
e
]
=
n
,
s
.
push
(
function
(){
var
t
,
n
,
s
,
r
;
for
(
s
=
this
.
select
(
function
(
t
){
return
t
.
key
===
e
}),
r
=
[],
t
=
0
,
n
=
s
.
length
;
n
>
t
;
t
++
)
i
=
s
[
t
],
r
.
push
(
i
.
update
());
return
r
}.
call
(
this
));
return
s
},
e
}(),
t
.
Util
=
{
bindEvent
:
function
(
t
,
i
,
e
){
return
null
!=
window
.
jQuery
?(
t
=
jQuery
(
t
),
null
!=
t
.
on
?
t
.
on
(
i
,
e
):
t
.
bind
(
i
,
e
)):
null
!=
window
.
addEventListener
?
t
.
addEventListener
(
i
,
e
,
!
1
):(
i
=
"on"
+
i
,
t
.
attachEvent
(
i
,
e
))},
unbindEvent
:
function
(
t
,
i
,
e
){
return
null
!=
window
.
jQuery
?(
t
=
jQuery
(
t
),
null
!=
t
.
off
?
t
.
off
(
i
,
e
):
t
.
unbind
(
i
,
e
)):
null
!=
window
.
removeEventListener
?
t
.
removeEventListener
(
i
,
e
,
!
1
):(
i
=
"on"
+
i
,
t
.
detachEvent
(
i
,
e
))},
getInputValue
:
function
(
t
){
var
i
,
e
,
n
,
s
;
if
(
null
!=
window
.
jQuery
)
switch
(
t
=
jQuery
(
t
),
t
[
0
].
type
){
case
"checkbox"
:
return
t
.
is
(
":checked"
);
default
:
return
t
.
val
()}
else
switch
(
t
.
type
){
case
"checkbox"
:
return
t
.
checked
;
case
"select-multiple"
:
for
(
s
=
[],
e
=
0
,
n
=
t
.
length
;
n
>
e
;
e
++
)
i
=
t
[
e
],
i
.
selected
&&
s
.
push
(
i
.
value
);
return
s
;
default
:
return
t
.
value
}}},
t
.
binders
=
{
enabled
:
function
(
t
,
i
){
return
t
.
disabled
=!
i
},
disabled
:
function
(
t
,
i
){
return
t
.
disabled
=!!
i
},
checked
:{
publishes
:
!
0
,
bind
:
function
(
i
){
return
t
.
Util
.
bindEvent
(
i
,
"change"
,
this
.
publish
)},
unbind
:
function
(
i
){
return
t
.
Util
.
unbindEvent
(
i
,
"change"
,
this
.
publish
)},
routine
:
function
(
t
,
i
){
var
e
;
return
t
.
checked
=
"radio"
===
t
.
type
?(
null
!=
(
e
=
t
.
value
)?
""
+
e
:
void
0
)
===
(
null
!=
i
?
""
+
i
:
void
0
):
!!
i
}},
unchecked
:{
publishes
:
!
0
,
bind
:
function
(
i
){
return
t
.
Util
.
bindEvent
(
i
,
"change"
,
this
.
publish
)},
unbind
:
function
(
i
){
return
t
.
Util
.
unbindEvent
(
i
,
"change"
,
this
.
publish
)},
routine
:
function
(
t
,
i
){
var
e
;
return
t
.
checked
=
"radio"
===
t
.
type
?(
null
!=
(
e
=
t
.
value
)?
""
+
e
:
void
0
)
!==
(
null
!=
i
?
""
+
i
:
void
0
):
!
i
}},
show
:
function
(
t
,
i
){
return
t
.
style
.
display
=
i
?
""
:
"none"
},
hide
:
function
(
t
,
i
){
return
t
.
style
.
display
=
i
?
"none"
:
""
},
html
:
function
(
t
,
i
){
return
t
.
innerHTML
=
null
!=
i
?
i
:
""
},
value
:{
publishes
:
!
0
,
bind
:
function
(
i
){
return
t
.
Util
.
bindEvent
(
i
,
"change"
,
this
.
publish
)},
unbind
:
function
(
i
){
return
t
.
Util
.
unbindEvent
(
i
,
"change"
,
this
.
publish
)},
routine
:
function
(
t
,
i
){
var
e
,
s
,
r
,
h
,
o
,
l
,
u
;
if
(
null
!=
window
.
jQuery
){
if
(
t
=
jQuery
(
t
),(
null
!=
i
?
""
+
i
:
void
0
)
!==
(
null
!=
(
h
=
t
.
val
())?
""
+
h
:
void
0
))
return
t
.
val
(
null
!=
i
?
i
:
""
)}
else
if
(
"select-multiple"
===
t
.
type
){
if
(
null
!=
i
){
for
(
u
=
[],
s
=
0
,
r
=
t
.
length
;
r
>
s
;
s
++
)
e
=
t
[
s
],
u
.
push
(
e
.
selected
=
(
o
=
e
.
value
,
n
.
call
(
i
,
o
)
>=
0
));
return
u
}}
else
if
((
null
!=
i
?
""
+
i
:
void
0
)
!==
(
null
!=
(
l
=
t
.
value
)?
""
+
l
:
void
0
))
return
t
.
value
=
null
!=
i
?
i
:
""
}},
text
:
function
(
t
,
i
){
return
null
!=
t
.
innerText
?
t
.
innerText
=
null
!=
i
?
i
:
""
:
t
.
textContent
=
null
!=
i
?
i
:
""
},
"if"
:{
block
:
!
0
,
bind
:
function
(
t
){
var
i
,
e
;
return
null
==
this
.
marker
?(
i
=
[
"data"
,
this
.
view
.
config
.
prefix
,
this
.
type
].
join
(
"-"
).
replace
(
"--"
,
"-"
),
e
=
t
.
getAttribute
(
i
),
this
.
marker
=
document
.
createComment
(
" rivets: "
+
this
.
type
+
" "
+
e
+
" "
),
t
.
removeAttribute
(
i
),
t
.
parentNode
.
insertBefore
(
this
.
marker
,
t
),
t
.
parentNode
.
removeChild
(
t
)):
void
0
},
unbind
:
function
(){
var
t
;
return
null
!=
(
t
=
this
.
nested
)?
t
.
unbind
():
void
0
},
routine
:
function
(
i
,
e
){
var
n
,
s
,
r
,
h
,
o
;
if
(
e
===
(
null
==
this
.
nested
)){
if
(
e
){
r
=
{},
o
=
this
.
view
.
models
;
for
(
n
in
o
)
s
=
o
[
n
],
r
[
n
]
=
s
;
return
h
=
{
binders
:
this
.
view
.
options
.
binders
,
formatters
:
this
.
view
.
options
.
formatters
,
config
:
this
.
view
.
options
.
config
},(
this
.
nested
=
new
t
.
View
(
i
,
r
,
h
)).
bind
(),
this
.
marker
.
parentNode
.
insertBefore
(
i
,
this
.
marker
.
nextSibling
)}
return
i
.
parentNode
.
removeChild
(
i
),
this
.
nested
.
unbind
(),
delete
this
.
nested
}}},
unless
:{
block
:
!
0
,
bind
:
function
(
t
){
return
rivets
.
binders
[
"if"
].
bind
.
call
(
this
,
t
)},
unbind
:
function
(){
return
rivets
.
binders
[
"if"
].
unbind
.
call
(
this
)},
routine
:
function
(
t
,
i
){
return
rivets
.
binders
[
"if"
].
routine
.
call
(
this
,
t
,
!
i
)}},
"on-*"
:{
"function"
:
!
0
,
unbind
:
function
(
i
){
return
this
.
handler
?
t
.
Util
.
unbindEvent
(
i
,
this
.
args
[
0
],
this
.
handler
):
void
0
},
routine
:
function
(
i
,
e
){
return
this
.
handler
&&
t
.
Util
.
unbindEvent
(
i
,
this
.
args
[
0
],
this
.
handler
),
t
.
Util
.
bindEvent
(
i
,
this
.
args
[
0
],
this
.
handler
=
this
.
eventHandler
(
e
))}},
"each-*"
:{
block
:
!
0
,
bind
:
function
(
t
){
var
i
;
return
null
==
this
.
marker
?(
i
=
[
"data"
,
this
.
view
.
config
.
prefix
,
this
.
type
].
join
(
"-"
).
replace
(
"--"
,
"-"
),
this
.
marker
=
document
.
createComment
(
" rivets: "
+
this
.
type
+
" "
),
this
.
iterated
=
[],
t
.
removeAttribute
(
i
),
t
.
parentNode
.
insertBefore
(
this
.
marker
,
t
),
t
.
parentNode
.
removeChild
(
t
)):
void
0
},
unbind
:
function
(){
var
t
,
i
,
e
,
n
,
s
;
if
(
null
!=
this
.
iterated
){
for
(
n
=
this
.
iterated
,
s
=
[],
i
=
0
,
e
=
n
.
length
;
e
>
i
;
i
++
)
t
=
n
[
i
],
s
.
push
(
t
.
unbind
());
return
s
}},
routine
:
function
(
i
,
e
){
var
n
,
s
,
r
,
h
,
o
,
l
,
u
,
d
,
a
,
c
,
f
,
p
,
b
,
v
,
g
,
m
,
y
,
w
,
k
,
x
,
E
;
if
(
u
=
this
.
args
[
0
],
e
=
e
||
[],
this
.
iterated
.
length
>
e
.
length
)
for
(
y
=
Array
(
this
.
iterated
.
length
-
e
.
length
),
b
=
0
,
g
=
y
.
length
;
g
>
b
;
b
++
)
s
=
y
[
b
],
p
=
this
.
iterated
.
pop
(),
p
.
unbind
(),
this
.
marker
.
parentNode
.
removeChild
(
p
.
els
[
0
]);
for
(
E
=
[],
r
=
v
=
0
,
m
=
e
.
length
;
m
>
v
;
r
=++
v
)
if
(
l
=
e
[
r
],
n
=
{},
n
[
u
]
=
l
,
null
==
this
.
iterated
[
r
]){
w
=
this
.
view
.
models
;
for
(
o
in
w
)
l
=
w
[
o
],
null
==
(
k
=
n
[
o
])
&&
(
n
[
o
]
=
l
);
a
=
this
.
iterated
.
length
?
this
.
iterated
[
this
.
iterated
.
length
-
1
].
els
[
0
]:
this
.
marker
,
d
=
{
binders
:
this
.
view
.
options
.
binders
,
formatters
:
this
.
view
.
options
.
formatters
,
config
:{}},
x
=
this
.
view
.
options
.
config
;
for
(
h
in
x
)
f
=
x
[
h
],
d
.
config
[
h
]
=
f
;
d
.
config
.
preloadData
=!
0
,
c
=
i
.
cloneNode
(
!
0
),
p
=
new
t
.
View
(
c
,
n
,
d
),
p
.
bind
(),
this
.
iterated
.
push
(
p
),
E
.
push
(
this
.
marker
.
parentNode
.
insertBefore
(
c
,
a
.
nextSibling
))}
else
this
.
iterated
[
r
].
models
[
u
]
!==
l
?
E
.
push
(
this
.
iterated
[
r
].
update
(
n
)):
E
.
push
(
void
0
);
return
E
}},
"class-*"
:
function
(
t
,
i
){
var
e
;
return
e
=
" "
+
t
.
className
+
" "
,
!
i
==
(
-
1
!==
e
.
indexOf
(
" "
+
this
.
args
[
0
]
+
" "
))?
t
.
className
=
i
?
""
+
t
.
className
+
" "
+
this
.
args
[
0
]:
e
.
replace
(
" "
+
this
.
args
[
0
]
+
" "
,
" "
).
trim
():
void
0
},
"*"
:
function
(
t
,
i
){
return
i
?
t
.
setAttribute
(
this
.
type
,
i
):
t
.
removeAttribute
(
this
.
type
)}},
t
.
config
=
{
preloadData
:
!
0
,
handler
:
function
(
t
,
i
,
e
){
return
this
.
call
(
t
,
i
,
e
.
view
.
models
)}},
t
.
formatters
=
{},
t
.
factory
=
function
(
i
){
return
i
.
binders
=
t
.
binders
,
i
.
formatters
=
t
.
formatters
,
i
.
config
=
t
.
config
,
i
.
configure
=
function
(
i
){
var
e
,
n
;
null
==
i
&&
(
i
=
{});
for
(
e
in
i
)
n
=
i
[
e
],
t
.
config
[
e
]
=
n
},
i
.
bind
=
function
(
i
,
e
,
n
){
var
s
;
return
null
==
e
&&
(
e
=
{}),
null
==
n
&&
(
n
=
{}),
s
=
new
t
.
View
(
i
,
e
,
n
),
s
.
bind
(),
s
}},
"object"
==
typeof
exports
?
t
.
factory
(
exports
):
"function"
==
typeof
define
&&
define
.
amd
?
define
([
"exports"
],
function
(
i
){
return
t
.
factory
(
this
.
rivets
=
i
),
i
}):
t
.
factory
(
this
.
rivets
=
{})}).
call
(
this
);
\ No newline at end of file
(
function
(){
var
t
,
i
=
function
(
t
,
i
){
return
function
(){
return
t
.
apply
(
i
,
arguments
)}},
e
=
[].
slice
,
n
=
[].
indexOf
||
function
(
t
){
for
(
var
i
=
0
,
e
=
this
.
length
;
e
>
i
;
i
++
)
if
(
i
in
this
&&
this
[
i
]
===
t
)
return
i
;
return
-
1
};
t
=
{},
String
.
prototype
.
trim
||
(
String
.
prototype
.
trim
=
function
(){
return
this
.
replace
(
/^
\s
+|
\s
+$/g
,
""
)}),
t
.
Binding
=
function
(){
function
n
(
t
,
e
,
n
,
s
,
r
,
h
){
var
o
,
l
,
u
,
d
;
if
(
this
.
view
=
t
,
this
.
el
=
e
,
this
.
type
=
n
,
this
.
key
=
s
,
this
.
keypath
=
r
,
this
.
options
=
null
!=
h
?
h
:{},
this
.
update
=
i
(
this
.
update
,
this
),
this
.
unbind
=
i
(
this
.
unbind
,
this
),
this
.
bind
=
i
(
this
.
bind
,
this
),
this
.
publish
=
i
(
this
.
publish
,
this
),
this
.
sync
=
i
(
this
.
sync
,
this
),
this
.
set
=
i
(
this
.
set
,
this
),
this
.
eventHandler
=
i
(
this
.
eventHandler
,
this
),
this
.
formattedValue
=
i
(
this
.
formattedValue
,
this
),
!
(
this
.
binder
=
this
.
view
.
binders
[
n
])){
d
=
this
.
view
.
binders
;
for
(
o
in
d
)
u
=
d
[
o
],
"*"
!==
o
&&-
1
!==
o
.
indexOf
(
"*"
)
&&
(
l
=
RegExp
(
"^"
+
o
.
replace
(
"*"
,
".+"
)
+
"$"
),
l
.
test
(
n
)
&&
(
this
.
binder
=
u
,
this
.
args
=
RegExp
(
"^"
+
o
.
replace
(
"*"
,
"(.+)"
)
+
"$"
).
exec
(
n
),
this
.
args
.
shift
()))}
this
.
binder
||
(
this
.
binder
=
this
.
view
.
binders
[
"*"
]),
this
.
binder
instanceof
Function
&&
(
this
.
binder
=
{
routine
:
this
.
binder
}),
this
.
formatters
=
this
.
options
.
formatters
||
[],
this
.
model
=
this
.
key
?
this
.
view
.
models
[
this
.
key
]:
this
.
view
.
models
}
return
n
.
prototype
.
formattedValue
=
function
(
t
){
var
i
,
n
,
s
,
r
,
h
,
o
;
for
(
o
=
this
.
formatters
,
r
=
0
,
h
=
o
.
length
;
h
>
r
;
r
++
)
n
=
o
[
r
],
i
=
n
.
split
(
/
\s
+/
),
s
=
i
.
shift
(),
n
=
this
.
model
[
s
]
instanceof
Function
?
this
.
model
[
s
]:
this
.
view
.
formatters
[
s
],(
null
!=
n
?
n
.
read
:
void
0
)
instanceof
Function
?
t
=
n
.
read
.
apply
(
n
,[
t
].
concat
(
e
.
call
(
i
))):
n
instanceof
Function
&&
(
t
=
n
.
apply
(
null
,[
t
].
concat
(
e
.
call
(
i
))));
return
t
},
n
.
prototype
.
eventHandler
=
function
(
t
){
var
i
,
e
;
return
e
=
(
i
=
this
).
view
.
config
.
handler
,
function
(
n
){
return
e
.
call
(
t
,
this
,
n
,
i
)}},
n
.
prototype
.
set
=
function
(
t
){
var
i
;
return
t
=
t
instanceof
Function
&&!
this
.
binder
[
"function"
]?
this
.
formattedValue
(
t
.
call
(
this
.
model
)):
this
.
formattedValue
(
t
),
null
!=
(
i
=
this
.
binder
.
routine
)?
i
.
call
(
this
,
this
.
el
,
t
):
void
0
},
n
.
prototype
.
sync
=
function
(){
return
this
.
set
(
this
.
options
.
bypass
?
this
.
model
[
this
.
keypath
]:
this
.
view
.
config
.
adapter
.
read
(
this
.
model
,
this
.
keypath
))},
n
.
prototype
.
publish
=
function
(){
var
i
,
n
,
s
,
r
,
h
,
o
,
l
,
u
,
d
;
for
(
r
=
t
.
Util
.
getInputValue
(
this
.
el
),
l
=
this
.
formatters
.
slice
(
0
).
reverse
(),
h
=
0
,
o
=
l
.
length
;
o
>
h
;
h
++
)
n
=
l
[
h
],
i
=
n
.
split
(
/
\s
+/
),
s
=
i
.
shift
(),(
null
!=
(
u
=
this
.
view
.
formatters
[
s
])?
u
.
publish
:
void
0
)
&&
(
r
=
(
d
=
this
.
view
.
formatters
[
s
]).
publish
.
apply
(
d
,[
r
].
concat
(
e
.
call
(
i
))));
return
this
.
view
.
config
.
adapter
.
publish
(
this
.
model
,
this
.
keypath
,
r
)},
n
.
prototype
.
bind
=
function
(){
var
t
,
i
,
e
,
n
,
s
,
r
,
h
,
o
,
l
;
if
(
null
!=
(
r
=
this
.
binder
.
bind
)
&&
r
.
call
(
this
,
this
.
el
),
this
.
options
.
bypass
?
this
.
sync
():(
this
.
view
.
config
.
adapter
.
subscribe
(
this
.
model
,
this
.
keypath
,
this
.
sync
),
this
.
view
.
config
.
preloadData
&&
this
.
sync
()),
null
!=
(
h
=
this
.
options
.
dependencies
)?
h
.
length
:
void
0
){
for
(
o
=
this
.
options
.
dependencies
,
l
=
[],
n
=
0
,
s
=
o
.
length
;
s
>
n
;
n
++
)
t
=
o
[
n
],
/^
\.
/
.
test
(
t
)?(
e
=
this
.
model
,
i
=
t
.
substr
(
1
)):(
t
=
t
.
split
(
"."
),
e
=
this
.
view
.
models
[
t
.
shift
()],
i
=
t
.
join
(
"."
)),
l
.
push
(
this
.
view
.
config
.
adapter
.
subscribe
(
e
,
i
,
this
.
sync
));
return
l
}},
n
.
prototype
.
unbind
=
function
(){
var
t
,
i
,
e
,
n
,
s
,
r
,
h
,
o
,
l
;
if
(
null
!=
(
r
=
this
.
binder
.
unbind
)
&&
r
.
call
(
this
,
this
.
el
),
this
.
options
.
bypass
||
this
.
view
.
config
.
adapter
.
unsubscribe
(
this
.
model
,
this
.
keypath
,
this
.
sync
),
null
!=
(
h
=
this
.
options
.
dependencies
)?
h
.
length
:
void
0
){
for
(
o
=
this
.
options
.
dependencies
,
l
=
[],
n
=
0
,
s
=
o
.
length
;
s
>
n
;
n
++
)
t
=
o
[
n
],
/^
\.
/
.
test
(
t
)?(
e
=
this
.
model
,
i
=
t
.
substr
(
1
)):(
t
=
t
.
split
(
"."
),
e
=
this
.
view
.
models
[
t
.
shift
()],
i
=
t
.
join
(
"."
)),
l
.
push
(
this
.
view
.
config
.
adapter
.
unsubscribe
(
e
,
i
,
this
.
sync
));
return
l
}},
n
.
prototype
.
update
=
function
(){
return
this
.
unbind
(),
this
.
model
=
this
.
key
?
this
.
view
.
models
[
this
.
key
]:
this
.
view
.
models
,
this
.
bind
()},
n
}(),
t
.
View
=
function
(){
function
e
(
e
,
n
,
s
){
var
r
,
h
,
o
,
l
,
u
,
d
,
a
,
c
,
f
,
p
;
for
(
this
.
els
=
e
,
this
.
models
=
n
,
this
.
options
=
null
!=
s
?
s
:{},
this
.
update
=
i
(
this
.
update
,
this
),
this
.
publish
=
i
(
this
.
publish
,
this
),
this
.
sync
=
i
(
this
.
sync
,
this
),
this
.
unbind
=
i
(
this
.
unbind
,
this
),
this
.
bind
=
i
(
this
.
bind
,
this
),
this
.
select
=
i
(
this
.
select
,
this
),
this
.
build
=
i
(
this
.
build
,
this
),
this
.
bindingRegExp
=
i
(
this
.
bindingRegExp
,
this
),
this
.
els
.
jquery
||
this
.
els
instanceof
Array
||
(
this
.
els
=
[
this
.
els
]),
a
=
[
"config"
,
"binders"
,
"formatters"
],
u
=
0
,
d
=
a
.
length
;
d
>
u
;
u
++
){
if
(
h
=
a
[
u
],
this
[
h
]
=
{},
this
.
options
[
h
]){
c
=
this
.
options
[
h
];
for
(
r
in
c
)
o
=
c
[
r
],
this
[
h
][
r
]
=
o
}
f
=
t
[
h
];
for
(
r
in
f
)
o
=
f
[
r
],
null
==
(
p
=
(
l
=
this
[
h
])[
r
])
&&
(
l
[
r
]
=
o
)}
this
.
build
()}
return
e
.
prototype
.
bindingRegExp
=
function
(){
var
t
;
return
t
=
this
.
config
.
prefix
,
t
?
RegExp
(
"^data-"
+
t
+
"-"
):
/^data-/
},
e
.
prototype
.
build
=
function
(){
var
i
,
e
,
s
,
r
,
h
,
o
,
l
,
u
,
d
,
a
,
c
,
f
=
this
;
for
(
this
.
bindings
=
[],
h
=
[],
i
=
this
.
bindingRegExp
(),
r
=
function
(
e
){
var
s
,
r
,
o
,
l
,
u
,
d
,
a
,
c
,
p
,
b
,
v
,
g
,
m
,
y
,
w
,
k
,
x
,
E
,
j
,
N
,
U
,
V
,
B
,
Q
,
R
,
A
,
C
,
F
;
if
(
0
>
n
.
call
(
h
,
e
)){
for
(
R
=
e
.
attributes
,
j
=
0
,
V
=
R
.
length
;
V
>
j
;
j
++
)
if
(
s
=
R
[
j
],
i
.
test
(
s
.
name
)){
if
(
x
=
s
.
name
.
replace
(
i
,
""
),
!
(
o
=
f
.
binders
[
x
])){
A
=
f
.
binders
;
for
(
a
in
A
)
E
=
A
[
a
],
"*"
!==
a
&&-
1
!==
a
.
indexOf
(
"*"
)
&&
(
w
=
RegExp
(
"^"
+
a
.
replace
(
"*"
,
".+"
)
+
"$"
),
w
.
test
(
x
)
&&
(
o
=
E
))}
if
(
o
||
(
o
=
f
.
binders
[
"*"
]),
o
.
block
){
for
(
C
=
e
.
getElementsByTagName
(
"*"
),
N
=
0
,
B
=
C
.
length
;
B
>
N
;
N
++
)
b
=
C
[
N
],
h
.
push
(
b
);
r
=
[
s
]}}
for
(
F
=
r
||
e
.
attributes
,
U
=
0
,
Q
=
F
.
length
;
Q
>
U
;
U
++
)
s
=
F
[
U
],
i
.
test
(
s
.
name
)
&&
(
v
=
{},
x
=
s
.
name
.
replace
(
i
,
""
),
y
=
function
(){
var
t
,
i
,
e
,
n
;
for
(
e
=
s
.
value
.
split
(
"|"
),
n
=
[],
t
=
0
,
i
=
e
.
length
;
i
>
t
;
t
++
)
m
=
e
[
t
],
n
.
push
(
m
.
trim
());
return
n
}(),
l
=
function
(){
var
t
,
i
,
e
,
n
;
for
(
e
=
y
.
shift
().
split
(
"<"
),
n
=
[],
t
=
0
,
i
=
e
.
length
;
i
>
t
;
t
++
)
u
=
e
[
t
],
n
.
push
(
u
.
trim
());
return
n
}(),
g
=
l
.
shift
(),
k
=
g
.
split
(
/
\.
|:/
),
v
.
formatters
=
y
,
v
.
bypass
=-
1
!==
g
.
indexOf
(
":"
),
k
[
0
]?
c
=
k
.
shift
():(
c
=
null
,
k
.
shift
()),
p
=
k
.
join
(
"."
),
c
&&
null
==
f
.
models
[
c
]
||
((
d
=
l
.
shift
())
&&
(
v
.
dependencies
=
d
.
split
(
/
\s
+/
)),
f
.
bindings
.
push
(
new
t
.
Binding
(
f
,
e
,
x
,
c
,
p
,
v
))));
r
&&
(
r
=
null
)}},
a
=
this
.
els
,
o
=
0
,
u
=
a
.
length
;
u
>
o
;
o
++
)
for
(
e
=
a
[
o
],
r
(
e
),
c
=
e
.
getElementsByTagName
(
"*"
),
l
=
0
,
d
=
c
.
length
;
d
>
l
;
l
++
)
s
=
c
[
l
],
null
!=
s
.
attributes
&&
r
(
s
)},
e
.
prototype
.
select
=
function
(
t
){
var
i
,
e
,
n
,
s
,
r
;
for
(
s
=
this
.
bindings
,
r
=
[],
e
=
0
,
n
=
s
.
length
;
n
>
e
;
e
++
)
i
=
s
[
e
],
t
(
i
)
&&
r
.
push
(
i
);
return
r
},
e
.
prototype
.
bind
=
function
(){
var
t
,
i
,
e
,
n
,
s
;
for
(
n
=
this
.
bindings
,
s
=
[],
i
=
0
,
e
=
n
.
length
;
e
>
i
;
i
++
)
t
=
n
[
i
],
s
.
push
(
t
.
bind
());
return
s
},
e
.
prototype
.
unbind
=
function
(){
var
t
,
i
,
e
,
n
,
s
;
for
(
n
=
this
.
bindings
,
s
=
[],
i
=
0
,
e
=
n
.
length
;
e
>
i
;
i
++
)
t
=
n
[
i
],
s
.
push
(
t
.
unbind
());
return
s
},
e
.
prototype
.
sync
=
function
(){
var
t
,
i
,
e
,
n
,
s
;
for
(
n
=
this
.
bindings
,
s
=
[],
i
=
0
,
e
=
n
.
length
;
e
>
i
;
i
++
)
t
=
n
[
i
],
s
.
push
(
t
.
sync
());
return
s
},
e
.
prototype
.
publish
=
function
(){
var
t
,
i
,
e
,
n
,
s
;
for
(
n
=
this
.
select
(
function
(
t
){
return
t
.
binder
.
publishes
}),
s
=
[],
i
=
0
,
e
=
n
.
length
;
e
>
i
;
i
++
)
t
=
n
[
i
],
s
.
push
(
t
.
publish
());
return
s
},
e
.
prototype
.
update
=
function
(
t
){
var
i
,
e
,
n
,
s
;
null
==
t
&&
(
t
=
{}),
s
=
[];
for
(
e
in
t
)
n
=
t
[
e
],
this
.
models
[
e
]
=
n
,
s
.
push
(
function
(){
var
t
,
n
,
s
,
r
;
for
(
s
=
this
.
select
(
function
(
t
){
return
t
.
key
===
e
}),
r
=
[],
t
=
0
,
n
=
s
.
length
;
n
>
t
;
t
++
)
i
=
s
[
t
],
r
.
push
(
i
.
update
());
return
r
}.
call
(
this
));
return
s
},
e
}(),
t
.
Util
=
{
bindEvent
:
function
(
t
,
i
,
e
){
return
null
!=
window
.
jQuery
?(
t
=
jQuery
(
t
),
null
!=
t
.
on
?
t
.
on
(
i
,
e
):
t
.
bind
(
i
,
e
)):
null
!=
window
.
addEventListener
?
t
.
addEventListener
(
i
,
e
,
!
1
):(
i
=
"on"
+
i
,
t
.
attachEvent
(
i
,
e
))},
unbindEvent
:
function
(
t
,
i
,
e
){
return
null
!=
window
.
jQuery
?(
t
=
jQuery
(
t
),
null
!=
t
.
off
?
t
.
off
(
i
,
e
):
t
.
unbind
(
i
,
e
)):
null
!=
window
.
removeEventListener
?
t
.
removeEventListener
(
i
,
e
,
!
1
):(
i
=
"on"
+
i
,
t
.
detachEvent
(
i
,
e
))},
getInputValue
:
function
(
t
){
var
i
,
e
,
n
,
s
;
if
(
null
!=
window
.
jQuery
)
switch
(
t
=
jQuery
(
t
),
t
[
0
].
type
){
case
"checkbox"
:
return
t
.
is
(
":checked"
);
default
:
return
t
.
val
()}
else
switch
(
t
.
type
){
case
"checkbox"
:
return
t
.
checked
;
case
"select-multiple"
:
for
(
s
=
[],
e
=
0
,
n
=
t
.
length
;
n
>
e
;
e
++
)
i
=
t
[
e
],
i
.
selected
&&
s
.
push
(
i
.
value
);
return
s
;
default
:
return
t
.
value
}}},
t
.
binders
=
{
enabled
:
function
(
t
,
i
){
return
t
.
disabled
=!
i
},
disabled
:
function
(
t
,
i
){
return
t
.
disabled
=!!
i
},
checked
:{
publishes
:
!
0
,
bind
:
function
(
i
){
return
t
.
Util
.
bindEvent
(
i
,
"change"
,
this
.
publish
)},
unbind
:
function
(
i
){
return
t
.
Util
.
unbindEvent
(
i
,
"change"
,
this
.
publish
)},
routine
:
function
(
t
,
i
){
var
e
;
return
t
.
checked
=
"radio"
===
t
.
type
?(
null
!=
(
e
=
t
.
value
)?
""
+
e
:
void
0
)
===
(
null
!=
i
?
""
+
i
:
void
0
):
!!
i
}},
unchecked
:{
publishes
:
!
0
,
bind
:
function
(
i
){
return
t
.
Util
.
bindEvent
(
i
,
"change"
,
this
.
publish
)},
unbind
:
function
(
i
){
return
t
.
Util
.
unbindEvent
(
i
,
"change"
,
this
.
publish
)},
routine
:
function
(
t
,
i
){
var
e
;
return
t
.
checked
=
"radio"
===
t
.
type
?(
null
!=
(
e
=
t
.
value
)?
""
+
e
:
void
0
)
!==
(
null
!=
i
?
""
+
i
:
void
0
):
!
i
}},
show
:
function
(
t
,
i
){
return
t
.
style
.
display
=
i
?
""
:
"none"
},
hide
:
function
(
t
,
i
){
return
t
.
style
.
display
=
i
?
"none"
:
""
},
html
:
function
(
t
,
i
){
return
t
.
innerHTML
=
null
!=
i
?
i
:
""
},
value
:{
publishes
:
!
0
,
bind
:
function
(
i
){
return
t
.
Util
.
bindEvent
(
i
,
"change"
,
this
.
publish
)},
unbind
:
function
(
i
){
return
t
.
Util
.
unbindEvent
(
i
,
"change"
,
this
.
publish
)},
routine
:
function
(
t
,
i
){
var
e
,
s
,
r
,
h
,
o
,
l
,
u
;
if
(
null
!=
window
.
jQuery
){
if
(
t
=
jQuery
(
t
),(
null
!=
i
?
""
+
i
:
void
0
)
!==
(
null
!=
(
h
=
t
.
val
())?
""
+
h
:
void
0
))
return
t
.
val
(
null
!=
i
?
i
:
""
)}
else
if
(
"select-multiple"
===
t
.
type
){
if
(
null
!=
i
){
for
(
u
=
[],
s
=
0
,
r
=
t
.
length
;
r
>
s
;
s
++
)
e
=
t
[
s
],
u
.
push
(
e
.
selected
=
(
o
=
e
.
value
,
n
.
call
(
i
,
o
)
>=
0
));
return
u
}}
else
if
((
null
!=
i
?
""
+
i
:
void
0
)
!==
(
null
!=
(
l
=
t
.
value
)?
""
+
l
:
void
0
))
return
t
.
value
=
null
!=
i
?
i
:
""
}},
text
:
function
(
t
,
i
){
return
null
!=
t
.
innerText
?
t
.
innerText
=
null
!=
i
?
i
:
""
:
t
.
textContent
=
null
!=
i
?
i
:
""
},
"if"
:{
block
:
!
0
,
bind
:
function
(
t
){
var
i
,
e
;
return
null
==
this
.
marker
?(
i
=
[
"data"
,
this
.
view
.
config
.
prefix
,
this
.
type
].
join
(
"-"
).
replace
(
"--"
,
"-"
),
e
=
t
.
getAttribute
(
i
),
this
.
marker
=
document
.
createComment
(
" rivets: "
+
this
.
type
+
" "
+
e
+
" "
),
t
.
removeAttribute
(
i
),
t
.
parentNode
.
insertBefore
(
this
.
marker
,
t
),
t
.
parentNode
.
removeChild
(
t
)):
void
0
},
unbind
:
function
(){
var
t
;
return
null
!=
(
t
=
this
.
nested
)?
t
.
unbind
():
void
0
},
routine
:
function
(
i
,
e
){
var
n
,
s
,
r
,
h
,
o
;
if
(
e
===
(
null
==
this
.
nested
)){
if
(
e
){
r
=
{},
o
=
this
.
view
.
models
;
for
(
n
in
o
)
s
=
o
[
n
],
r
[
n
]
=
s
;
return
h
=
{
binders
:
this
.
view
.
options
.
binders
,
formatters
:
this
.
view
.
options
.
formatters
,
config
:
this
.
view
.
options
.
config
},(
this
.
nested
=
new
t
.
View
(
i
,
r
,
h
)).
bind
(),
this
.
marker
.
parentNode
.
insertBefore
(
i
,
this
.
marker
.
nextSibling
)}
return
i
.
parentNode
.
removeChild
(
i
),
this
.
nested
.
unbind
(),
delete
this
.
nested
}}},
unless
:{
block
:
!
0
,
bind
:
function
(
i
){
return
t
.
binders
[
"if"
].
bind
.
call
(
this
,
i
)},
unbind
:
function
(){
return
t
.
binders
[
"if"
].
unbind
.
call
(
this
)},
routine
:
function
(
i
,
e
){
return
t
.
binders
[
"if"
].
routine
.
call
(
this
,
i
,
!
e
)}},
"on-*"
:{
"function"
:
!
0
,
unbind
:
function
(
i
){
return
this
.
handler
?
t
.
Util
.
unbindEvent
(
i
,
this
.
args
[
0
],
this
.
handler
):
void
0
},
routine
:
function
(
i
,
e
){
return
this
.
handler
&&
t
.
Util
.
unbindEvent
(
i
,
this
.
args
[
0
],
this
.
handler
),
t
.
Util
.
bindEvent
(
i
,
this
.
args
[
0
],
this
.
handler
=
this
.
eventHandler
(
e
))}},
"each-*"
:{
block
:
!
0
,
bind
:
function
(
t
){
var
i
;
return
null
==
this
.
marker
?(
i
=
[
"data"
,
this
.
view
.
config
.
prefix
,
this
.
type
].
join
(
"-"
).
replace
(
"--"
,
"-"
),
this
.
marker
=
document
.
createComment
(
" rivets: "
+
this
.
type
+
" "
),
this
.
iterated
=
[],
t
.
removeAttribute
(
i
),
t
.
parentNode
.
insertBefore
(
this
.
marker
,
t
),
t
.
parentNode
.
removeChild
(
t
)):
void
0
},
unbind
:
function
(){
var
t
,
i
,
e
,
n
,
s
;
if
(
null
!=
this
.
iterated
){
for
(
n
=
this
.
iterated
,
s
=
[],
i
=
0
,
e
=
n
.
length
;
e
>
i
;
i
++
)
t
=
n
[
i
],
s
.
push
(
t
.
unbind
());
return
s
}},
routine
:
function
(
i
,
e
){
var
n
,
s
,
r
,
h
,
o
,
l
,
u
,
d
,
a
,
c
,
f
,
p
,
b
,
v
,
g
,
m
,
y
,
w
,
k
,
x
,
E
;
if
(
u
=
this
.
args
[
0
],
e
=
e
||
[],
this
.
iterated
.
length
>
e
.
length
)
for
(
y
=
Array
(
this
.
iterated
.
length
-
e
.
length
),
b
=
0
,
g
=
y
.
length
;
g
>
b
;
b
++
)
s
=
y
[
b
],
p
=
this
.
iterated
.
pop
(),
p
.
unbind
(),
this
.
marker
.
parentNode
.
removeChild
(
p
.
els
[
0
]);
for
(
E
=
[],
r
=
v
=
0
,
m
=
e
.
length
;
m
>
v
;
r
=++
v
)
if
(
l
=
e
[
r
],
n
=
{},
n
[
u
]
=
l
,
null
==
this
.
iterated
[
r
]){
w
=
this
.
view
.
models
;
for
(
o
in
w
)
l
=
w
[
o
],
null
==
(
k
=
n
[
o
])
&&
(
n
[
o
]
=
l
);
a
=
this
.
iterated
.
length
?
this
.
iterated
[
this
.
iterated
.
length
-
1
].
els
[
0
]:
this
.
marker
,
d
=
{
binders
:
this
.
view
.
options
.
binders
,
formatters
:
this
.
view
.
options
.
formatters
,
config
:{}},
x
=
this
.
view
.
options
.
config
;
for
(
h
in
x
)
f
=
x
[
h
],
d
.
config
[
h
]
=
f
;
d
.
config
.
preloadData
=!
0
,
c
=
i
.
cloneNode
(
!
0
),
p
=
new
t
.
View
(
c
,
n
,
d
),
p
.
bind
(),
this
.
iterated
.
push
(
p
),
E
.
push
(
this
.
marker
.
parentNode
.
insertBefore
(
c
,
a
.
nextSibling
))}
else
this
.
iterated
[
r
].
models
[
u
]
!==
l
?
E
.
push
(
this
.
iterated
[
r
].
update
(
n
)):
E
.
push
(
void
0
);
return
E
}},
"class-*"
:
function
(
t
,
i
){
var
e
;
return
e
=
" "
+
t
.
className
+
" "
,
!
i
==
(
-
1
!==
e
.
indexOf
(
" "
+
this
.
args
[
0
]
+
" "
))?
t
.
className
=
i
?
""
+
t
.
className
+
" "
+
this
.
args
[
0
]:
e
.
replace
(
" "
+
this
.
args
[
0
]
+
" "
,
" "
).
trim
():
void
0
},
"*"
:
function
(
t
,
i
){
return
i
?
t
.
setAttribute
(
this
.
type
,
i
):
t
.
removeAttribute
(
this
.
type
)}},
t
.
config
=
{
preloadData
:
!
0
,
handler
:
function
(
t
,
i
,
e
){
return
this
.
call
(
t
,
i
,
e
.
view
.
models
)}},
t
.
formatters
=
{},
t
.
factory
=
function
(
i
){
return
i
.
binders
=
t
.
binders
,
i
.
formatters
=
t
.
formatters
,
i
.
config
=
t
.
config
,
i
.
configure
=
function
(
i
){
var
e
,
n
;
null
==
i
&&
(
i
=
{});
for
(
e
in
i
)
n
=
i
[
e
],
t
.
config
[
e
]
=
n
},
i
.
bind
=
function
(
i
,
e
,
n
){
var
s
;
return
null
==
e
&&
(
e
=
{}),
null
==
n
&&
(
n
=
{}),
s
=
new
t
.
View
(
i
,
e
,
n
),
s
.
bind
(),
s
}},
"object"
==
typeof
exports
?
t
.
factory
(
exports
):
"function"
==
typeof
define
&&
define
.
amd
?
define
([
"exports"
],
function
(
i
){
return
t
.
factory
(
this
.
rivets
=
i
),
i
}):
t
.
factory
(
this
.
rivets
=
{})}).
call
(
this
);
\ No newline at end of file
...
...
package.json
View file @
09082da
{
"name"
:
"rivets"
,
"description"
:
"Declarative data binding facility."
,
"version"
:
"0.5.
6
"
,
"version"
:
"0.5.
7
"
,
"author"
:
"Michael Richards"
,
"url"
:
"http://rivetsjs.com"
,
"main"
:
"./dist/rivets.js"
,
...
...
src/rivets.coffee
View file @
09082da
# Rivets.js
# =========
# > version: 0.5.
6
# > version: 0.5.
7
# > author: Michael Richards
# > license: MIT
# >
...
...
Please
register
or
sign in
to post a comment