Page Menu
Home
Code
Search
Configure Global Search
Log In
Files
F886275
strings.js
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
8 KB
Subscribers
None
strings.js
View Options
if
(
!
dojo
.
_hasResource
[
"dojox.dtl.filter.strings"
]){
//_hasResource checks added by build. Do not use _hasResource directly in your code.
dojo
.
_hasResource
[
"dojox.dtl.filter.strings"
]
=
true
;
dojo
.
provide
(
"dojox.dtl.filter.strings"
);
dojo
.
require
(
"dojox.dtl.filter.htmlstrings"
);
dojo
.
require
(
"dojox.string.sprintf"
);
dojo
.
require
(
"dojox.string.tokenize"
);
dojo
.
mixin
(
dojox
.
dtl
.
filter
.
strings
,
{
addslashes
:
function
(
value
){
// summary: Adds slashes - useful for passing strings to JavaScript, for example.
return
value
.
replace
(
/\\/g
,
"\\\\"
).
replace
(
/"/g
,
'\\"'
).
replace
(
/'/g
,
"\\'"
);
},
capfirst
:
function
(
value
){
// summary: Capitalizes the first character of the value
value
=
""
+
value
;
return
value
.
charAt
(
0
).
toUpperCase
()
+
value
.
substring
(
1
);
},
center
:
function
(
value
,
arg
){
// summary: Centers the value in a field of a given width
arg
=
arg
||
value
.
length
;
value
=
value
+
""
;
var
diff
=
arg
-
value
.
length
;
if
(
diff
%
2
){
value
=
value
+
" "
;
diff
-=
1
;
}
for
(
var
i
=
0
;
i
<
diff
;
i
+=
2
){
value
=
" "
+
value
+
" "
;
}
return
value
;
},
cut
:
function
(
value
,
arg
){
// summary: Removes all values of arg from the given string
arg
=
arg
+
""
||
""
;
value
=
value
+
""
;
return
value
.
replace
(
new
RegExp
(
arg
,
"g"
),
""
);
},
_fix_ampersands
:
/&(?!(\w+|#\d+);)/g
,
fix_ampersands
:
function
(
value
){
// summary: Replaces ampersands with ``&`` entities
return
value
.
replace
(
dojox
.
dtl
.
filter
.
strings
.
_fix_ampersands
,
"&"
);
},
floatformat
:
function
(
value
,
arg
){
// summary: Format a number according to arg
// description:
// If called without an argument, displays a floating point
// number as 34.2 -- but only if there's a point to be displayed.
// With a positive numeric argument, it displays that many decimal places
// always.
// With a negative numeric argument, it will display that many decimal
// places -- but only if there's places to be displayed.
arg
=
parseInt
(
arg
||
-
1
);
value
=
parseFloat
(
value
);
var
m
=
value
-
value
.
toFixed
(
0
);
if
(
!
m
&&
arg
<
0
){
return
value
.
toFixed
();
}
value
=
value
.
toFixed
(
Math
.
abs
(
arg
));
return
(
arg
<
0
)
?
parseFloat
(
value
)
+
""
:
value
;
},
iriencode
:
function
(
value
){
return
dojox
.
dtl
.
text
.
urlquote
(
value
,
"/#%[]=:;$&()+,!"
);
},
linenumbers
:
function
(
value
){
// summary: Displays text with line numbers
var
df
=
dojox
.
dtl
.
filter
;
var
lines
=
value
.
split
(
"\n"
);
var
output
=
[];
var
width
=
(
lines
.
length
+
""
).
length
;
for
(
var
i
=
0
,
line
;
i
<
lines
.
length
;
i
++
){
line
=
lines
[
i
];
output
.
push
(
df
.
strings
.
ljust
(
i
+
1
,
width
)
+
". "
+
df
.
htmlstrings
.
escape
(
line
));
}
return
output
.
join
(
"\n"
);
},
ljust
:
function
(
value
,
arg
){
value
=
value
+
""
;
arg
=
parseInt
(
arg
);
while
(
value
.
length
<
arg
){
value
=
value
+
" "
;
}
return
value
;
},
lower
:
function
(
value
){
// summary: Converts a string into all lowercase
return
(
value
+
""
).
toLowerCase
();
},
make_list
:
function
(
value
){
// summary:
// Returns the value turned into a list. For an integer, it's a list of
// digits. For a string, it's a list of characters.
var
output
=
[];
if
(
typeof
value
==
"number"
){
value
=
value
+
""
;
}
if
(
value
.
charAt
){
for
(
var
i
=
0
;
i
<
value
.
length
;
i
++
){
output
.
push
(
value
.
charAt
(
i
));
}
return
output
;
}
if
(
typeof
value
==
"object"
){
for
(
var
key
in
value
){
output
.
push
(
value
[
key
]);
}
return
output
;
}
return
[];
},
rjust
:
function
(
value
,
arg
){
value
=
value
+
""
;
arg
=
parseInt
(
arg
);
while
(
value
.
length
<
arg
){
value
=
" "
+
value
;
}
return
value
;
},
slugify
:
function
(
value
){
// summary: Converts to lowercase, removes
// non-alpha chars and converts spaces to hyphens
value
=
value
.
replace
(
/[^\w\s-]/g
,
""
).
toLowerCase
();
return
value
.
replace
(
/[\-\s]+/g
,
"-"
);
},
_strings
:
{},
stringformat
:
function
(
value
,
arg
){
// summary:
// Formats the variable according to the argument, a string formatting specifier.
// This specifier uses Python string formating syntax, with the exception that
// the leading "%" is dropped.
arg
=
""
+
arg
;
var
strings
=
dojox
.
dtl
.
filter
.
strings
.
_strings
;
if
(
!
strings
[
arg
]){
strings
[
arg
]
=
new
dojox
.
string
.
sprintf
.
Formatter
(
"%"
+
arg
);
}
return
strings
[
arg
].
format
(
value
);
},
title
:
function
(
value
){
// summary: Converts a string into titlecase
var
last
,
title
=
""
;
for
(
var
i
=
0
,
current
;
i
<
value
.
length
;
i
++
){
current
=
value
.
charAt
(
i
);
if
(
last
==
" "
||
last
==
"\n"
||
last
==
"\t"
||
!
last
){
title
+=
current
.
toUpperCase
();
}
else
{
title
+=
current
.
toLowerCase
();
}
last
=
current
;
}
return
title
;
},
_truncatewords
:
/[ \n\r\t]/
,
truncatewords
:
function
(
value
,
arg
){
// summary: Truncates a string after a certain number of words
// arg: Integer
// Number of words to truncate after
arg
=
parseInt
(
arg
);
if
(
!
arg
){
return
value
;
}
for
(
var
i
=
0
,
j
=
value
.
length
,
count
=
0
,
current
,
last
;
i
<
value
.
length
;
i
++
){
current
=
value
.
charAt
(
i
);
if
(
dojox
.
dtl
.
filter
.
strings
.
_truncatewords
.
test
(
last
)){
if
(
!
dojox
.
dtl
.
filter
.
strings
.
_truncatewords
.
test
(
current
)){
++
count
;
if
(
count
==
arg
){
return
value
.
substring
(
0
,
j
+
1
);
}
}
}
else
if
(
!
dojox
.
dtl
.
filter
.
strings
.
_truncatewords
.
test
(
current
)){
j
=
i
;
}
last
=
current
;
}
return
value
;
},
_truncate_words
:
/(&.*?;|<.*?>|(\w[\w-]*))/g
,
_truncate_tag
:
/<(\/)?([^ ]+?)(?: (\/)| .*?)?>/
,
_truncate_singlets
:
{
br
:
true
,
col
:
true
,
link
:
true
,
base
:
true
,
img
:
true
,
param
:
true
,
area
:
true
,
hr
:
true
,
input
:
true
},
truncatewords_html
:
function
(
value
,
arg
){
arg
=
parseInt
(
arg
);
if
(
arg
<=
0
){
return
""
;
}
var
strings
=
dojox
.
dtl
.
filter
.
strings
;
var
words
=
0
;
var
open
=
[];
var
output
=
dojox
.
string
.
tokenize
(
value
,
strings
.
_truncate_words
,
function
(
all
,
word
){
if
(
word
){
// It's an actual non-HTML word
++
words
;
if
(
words
<
arg
){
return
word
;
}
else
if
(
words
==
arg
){
return
word
+
" ..."
;
}
}
// Check for tag
var
tag
=
all
.
match
(
strings
.
_truncate_tag
);
if
(
!
tag
||
words
>=
arg
){
// Don't worry about non tags or tags after our truncate point
return
;
}
var
closing
=
tag
[
1
];
var
tagname
=
tag
[
2
].
toLowerCase
();
var
selfclosing
=
tag
[
3
];
if
(
closing
||
strings
.
_truncate_singlets
[
tagname
]){
}
else
if
(
closing
){
var
i
=
dojo
.
indexOf
(
open
,
tagname
);
if
(
i
!=
-
1
){
open
=
open
.
slice
(
i
+
1
);
}
}
else
{
open
.
unshift
(
tagname
);
}
return
all
;
}).
join
(
""
);
output
=
output
.
replace
(
/\s+$/g
,
""
);
for
(
var
i
=
0
,
tag
;
tag
=
open
[
i
];
i
++
){
output
+=
"</"
+
tag
+
">"
;
}
return
output
;
},
upper
:
function
(
value
){
return
value
.
toUpperCase
();
},
urlencode
:
function
(
value
){
return
dojox
.
dtl
.
text
.
urlquote
(
value
);
},
_urlize
:
/^((?:[(>]|<)*)(.*?)((?:[.,)>\n]|>)*)$/
,
_urlize2
:
/^\S+@[a-zA-Z0-9._-]+\.[a-zA-Z0-9._-]+$/
,
urlize
:
function
(
value
){
return
dojox
.
dtl
.
filter
.
strings
.
urlizetrunc
(
value
);
},
urlizetrunc
:
function
(
value
,
arg
){
arg
=
parseInt
(
arg
);
return
dojox
.
string
.
tokenize
(
value
,
/(\S+)/g
,
function
(
word
){
var
matches
=
dojox
.
dtl
.
filter
.
strings
.
_urlize
.
exec
(
word
);
if
(
!
matches
){
return
word
;
}
var
lead
=
matches
[
1
];
var
middle
=
matches
[
2
];
var
trail
=
matches
[
3
];
var
startsWww
=
middle
.
indexOf
(
"www."
)
==
0
;
var
hasAt
=
middle
.
indexOf
(
"@"
)
!=
-
1
;
var
hasColon
=
middle
.
indexOf
(
":"
)
!=
-
1
;
var
startsHttp
=
middle
.
indexOf
(
"http://"
)
==
0
;
var
startsHttps
=
middle
.
indexOf
(
"https://"
)
==
0
;
var
firstAlpha
=
/[a-zA-Z0-9]/
.
test
(
middle
.
charAt
(
0
));
var
last4
=
middle
.
substring
(
middle
.
length
-
4
);
var
trimmed
=
middle
;
if
(
arg
>
3
){
trimmed
=
trimmed
.
substring
(
0
,
arg
-
3
)
+
"..."
;
}
if
(
startsWww
||
(
!
hasAt
&&
!
startsHttp
&&
middle
.
length
&&
firstAlpha
&&
(
last4
==
".org"
||
last4
==
".net"
||
last4
==
".com"
))){
return
'<a href="http://'
+
middle
+
'" rel="nofollow">'
+
trimmed
+
'</a>'
;
}
else
if
(
startsHttp
||
startsHttps
){
return
'<a href="'
+
middle
+
'" rel="nofollow">'
+
trimmed
+
'</a>'
;
}
else
if
(
hasAt
&&
!
startsWww
&&
!
hasColon
&&
dojox
.
dtl
.
filter
.
strings
.
_urlize2
.
test
(
middle
)){
return
'<a href="mailto:'
+
middle
+
'">'
+
middle
+
'</a>'
;
}
return
word
;
}).
join
(
""
);
},
wordcount
:
function
(
value
){
return
dojox
.
dtl
.
text
.
pySplit
(
value
).
length
;
},
wordwrap
:
function
(
value
,
arg
){
arg
=
parseInt
(
arg
);
// summary: Wraps words at specified line length
var
output
=
[];
var
parts
=
value
.
split
(
/ /g
);
if
(
parts
.
length
){
var
word
=
parts
.
shift
();
output
.
push
(
word
);
var
pos
=
word
.
length
-
word
.
lastIndexOf
(
"\n"
)
-
1
;
for
(
var
i
=
0
;
i
<
parts
.
length
;
i
++
){
word
=
parts
[
i
];
if
(
word
.
indexOf
(
"\n"
)
!=
-
1
){
var
lines
=
word
.
split
(
/\n/g
);
}
else
{
var
lines
=
[
word
];
}
pos
+=
lines
[
0
].
length
+
1
;
if
(
arg
&&
pos
>
arg
){
output
.
push
(
"\n"
);
pos
=
lines
[
lines
.
length
-
1
].
length
;
}
else
{
output
.
push
(
" "
);
if
(
lines
.
length
>
1
){
pos
=
lines
[
lines
.
length
-
1
].
length
;
}
}
output
.
push
(
word
);
}
}
return
output
.
join
(
""
);
}
});
}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Mon, Apr 7, 00:13 (2 w, 2 d ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
27333
Default Alt Text
strings.js (8 KB)
Attached To
rZEDHG ZedLegacy
Event Timeline
Log In to Comment