├── .gitignore
├── .travis.yml
├── CHANGELOG.md
├── LICENSE.txt
├── README.md
├── build.sbt
├── pp.png
├── project
├── build.properties
└── plugins.sbt
├── src
├── jekyll
│ ├── 404.html
│ ├── _config.yml
│ ├── _includes
│ │ ├── head.html
│ │ └── sidebar.html
│ ├── _layouts
│ │ ├── default.html
│ │ └── page.html
│ ├── index.md
│ ├── public
│ │ ├── css
│ │ │ ├── lanyon.css
│ │ │ ├── poole.css
│ │ │ └── syntax.css
│ │ └── pp.png
│ ├── v0.1
│ │ └── api
│ │ │ ├── com
│ │ │ ├── package.html
│ │ │ └── peoplepattern
│ │ │ │ ├── package.html
│ │ │ │ └── text
│ │ │ │ ├── Implicits$$StringWithAnalysis.html
│ │ │ │ ├── Implicits$.html
│ │ │ │ ├── LangBundle$.html
│ │ │ │ ├── LangBundle.html
│ │ │ │ ├── LanguageIdentifier$.html
│ │ │ │ ├── LanguageIdentifier.html
│ │ │ │ └── package.html
│ │ │ ├── index.html
│ │ │ ├── index.js
│ │ │ ├── index
│ │ │ ├── index-b.html
│ │ │ ├── index-c.html
│ │ │ ├── index-d.html
│ │ │ ├── index-e.html
│ │ │ ├── index-f.html
│ │ │ ├── index-i.html
│ │ │ ├── index-j.html
│ │ │ ├── index-l.html
│ │ │ ├── index-m.html
│ │ │ ├── index-n.html
│ │ │ ├── index-p.html
│ │ │ ├── index-s.html
│ │ │ ├── index-t.html
│ │ │ └── index-u.html
│ │ │ ├── lib
│ │ │ ├── arrow-down.png
│ │ │ ├── arrow-right.png
│ │ │ ├── class.png
│ │ │ ├── class_big.png
│ │ │ ├── class_diagram.png
│ │ │ ├── class_to_object_big.png
│ │ │ ├── constructorsbg.gif
│ │ │ ├── conversionbg.gif
│ │ │ ├── defbg-blue.gif
│ │ │ ├── defbg-green.gif
│ │ │ ├── diagrams.css
│ │ │ ├── diagrams.js
│ │ │ ├── filter_box_left.png
│ │ │ ├── filter_box_left2.gif
│ │ │ ├── filter_box_right.png
│ │ │ ├── filterbg.gif
│ │ │ ├── filterboxbarbg.gif
│ │ │ ├── filterboxbarbg.png
│ │ │ ├── filterboxbg.gif
│ │ │ ├── fullcommenttopbg.gif
│ │ │ ├── index.css
│ │ │ ├── index.js
│ │ │ ├── jquery-ui.js
│ │ │ ├── jquery.js
│ │ │ ├── jquery.layout.js
│ │ │ ├── modernizr.custom.js
│ │ │ ├── navigation-li-a.png
│ │ │ ├── navigation-li.png
│ │ │ ├── object.png
│ │ │ ├── object_big.png
│ │ │ ├── object_diagram.png
│ │ │ ├── object_to_class_big.png
│ │ │ ├── object_to_trait_big.png
│ │ │ ├── object_to_type_big.png
│ │ │ ├── ownderbg2.gif
│ │ │ ├── ownerbg.gif
│ │ │ ├── ownerbg2.gif
│ │ │ ├── package.png
│ │ │ ├── package_big.png
│ │ │ ├── packagesbg.gif
│ │ │ ├── permalink.png
│ │ │ ├── ref-index.css
│ │ │ ├── remove.png
│ │ │ ├── scheduler.js
│ │ │ ├── selected-implicits.png
│ │ │ ├── selected-right-implicits.png
│ │ │ ├── selected-right.png
│ │ │ ├── selected.png
│ │ │ ├── selected2-right.png
│ │ │ ├── selected2.png
│ │ │ ├── signaturebg.gif
│ │ │ ├── signaturebg2.gif
│ │ │ ├── template.css
│ │ │ ├── template.js
│ │ │ ├── tools.tooltip.js
│ │ │ ├── trait.png
│ │ │ ├── trait_big.png
│ │ │ ├── trait_diagram.png
│ │ │ ├── trait_to_object_big.png
│ │ │ ├── type.png
│ │ │ ├── type_big.png
│ │ │ ├── type_diagram.png
│ │ │ ├── type_to_object_big.png
│ │ │ ├── typebg.gif
│ │ │ ├── unselected.png
│ │ │ └── valuemembersbg.gif
│ │ │ └── package.html
│ ├── v0.2
│ │ └── api
│ │ │ ├── com
│ │ │ ├── package.html
│ │ │ └── peoplepattern
│ │ │ │ ├── package.html
│ │ │ │ └── text
│ │ │ │ ├── Implicits$$StringWithAnalysis.html
│ │ │ │ ├── Implicits$.html
│ │ │ │ ├── LangBundle$.html
│ │ │ │ ├── LangBundle.html
│ │ │ │ ├── LanguageIdentifier$.html
│ │ │ │ ├── LanguageIdentifier.html
│ │ │ │ ├── StringUtil$.html
│ │ │ │ └── package.html
│ │ │ ├── index.html
│ │ │ ├── index.js
│ │ │ ├── index
│ │ │ ├── index-a.html
│ │ │ ├── index-b.html
│ │ │ ├── index-c.html
│ │ │ ├── index-d.html
│ │ │ ├── index-i.html
│ │ │ ├── index-l.html
│ │ │ ├── index-m.html
│ │ │ ├── index-n.html
│ │ │ ├── index-p.html
│ │ │ ├── index-s.html
│ │ │ ├── index-t.html
│ │ │ └── index-u.html
│ │ │ ├── lib
│ │ │ ├── arrow-down.png
│ │ │ ├── arrow-right.png
│ │ │ ├── class.png
│ │ │ ├── class_big.png
│ │ │ ├── class_diagram.png
│ │ │ ├── class_to_object_big.png
│ │ │ ├── constructorsbg.gif
│ │ │ ├── conversionbg.gif
│ │ │ ├── defbg-blue.gif
│ │ │ ├── defbg-green.gif
│ │ │ ├── diagrams.css
│ │ │ ├── diagrams.js
│ │ │ ├── filter_box_left.png
│ │ │ ├── filter_box_left2.gif
│ │ │ ├── filter_box_right.png
│ │ │ ├── filterbg.gif
│ │ │ ├── filterboxbarbg.gif
│ │ │ ├── filterboxbarbg.png
│ │ │ ├── filterboxbg.gif
│ │ │ ├── fullcommenttopbg.gif
│ │ │ ├── index.css
│ │ │ ├── index.js
│ │ │ ├── jquery-ui.js
│ │ │ ├── jquery.js
│ │ │ ├── jquery.layout.js
│ │ │ ├── modernizr.custom.js
│ │ │ ├── navigation-li-a.png
│ │ │ ├── navigation-li.png
│ │ │ ├── object.png
│ │ │ ├── object_big.png
│ │ │ ├── object_diagram.png
│ │ │ ├── object_to_class_big.png
│ │ │ ├── object_to_trait_big.png
│ │ │ ├── object_to_type_big.png
│ │ │ ├── ownderbg2.gif
│ │ │ ├── ownerbg.gif
│ │ │ ├── ownerbg2.gif
│ │ │ ├── package.png
│ │ │ ├── package_big.png
│ │ │ ├── packagesbg.gif
│ │ │ ├── ref-index.css
│ │ │ ├── remove.png
│ │ │ ├── scheduler.js
│ │ │ ├── selected-implicits.png
│ │ │ ├── selected-right-implicits.png
│ │ │ ├── selected-right.png
│ │ │ ├── selected.png
│ │ │ ├── selected2-right.png
│ │ │ ├── selected2.png
│ │ │ ├── signaturebg.gif
│ │ │ ├── signaturebg2.gif
│ │ │ ├── template.css
│ │ │ ├── template.js
│ │ │ ├── tools.tooltip.js
│ │ │ ├── trait.png
│ │ │ ├── trait_big.png
│ │ │ ├── trait_diagram.png
│ │ │ ├── trait_to_object_big.png
│ │ │ ├── type.png
│ │ │ ├── type_big.png
│ │ │ ├── type_diagram.png
│ │ │ ├── type_to_object_big.png
│ │ │ ├── typebg.gif
│ │ │ ├── unselected.png
│ │ │ └── valuemembersbg.gif
│ │ │ └── package.html
│ └── v0.3
│ │ └── api
│ │ ├── com
│ │ ├── package.html
│ │ └── peoplepattern
│ │ │ ├── package.html
│ │ │ └── text
│ │ │ ├── Implicits$$StringWithAnalysis.html
│ │ │ ├── Implicits$.html
│ │ │ ├── JaLangBundle$.html
│ │ │ ├── LangBundle$.html
│ │ │ ├── LangBundle.html
│ │ │ ├── LanguageIdentifier$.html
│ │ │ ├── LanguageIdentifier.html
│ │ │ ├── StringUtil$.html
│ │ │ └── package.html
│ │ ├── index.html
│ │ ├── index.js
│ │ ├── index
│ │ ├── index-a.html
│ │ ├── index-b.html
│ │ ├── index-c.html
│ │ ├── index-d.html
│ │ ├── index-i.html
│ │ ├── index-j.html
│ │ ├── index-l.html
│ │ ├── index-m.html
│ │ ├── index-n.html
│ │ ├── index-p.html
│ │ ├── index-s.html
│ │ ├── index-t.html
│ │ └── index-u.html
│ │ ├── lib
│ │ ├── arrow-down.png
│ │ ├── arrow-right.png
│ │ ├── class.png
│ │ ├── class_big.png
│ │ ├── class_diagram.png
│ │ ├── class_to_object_big.png
│ │ ├── constructorsbg.gif
│ │ ├── conversionbg.gif
│ │ ├── defbg-blue.gif
│ │ ├── defbg-green.gif
│ │ ├── diagrams.css
│ │ ├── diagrams.js
│ │ ├── filter_box_left.png
│ │ ├── filter_box_left2.gif
│ │ ├── filter_box_right.png
│ │ ├── filterbg.gif
│ │ ├── filterboxbarbg.gif
│ │ ├── filterboxbarbg.png
│ │ ├── filterboxbg.gif
│ │ ├── fullcommenttopbg.gif
│ │ ├── index.css
│ │ ├── index.js
│ │ ├── jquery-ui.js
│ │ ├── jquery.js
│ │ ├── jquery.layout.js
│ │ ├── modernizr.custom.js
│ │ ├── navigation-li-a.png
│ │ ├── navigation-li.png
│ │ ├── object.png
│ │ ├── object_big.png
│ │ ├── object_diagram.png
│ │ ├── object_to_class_big.png
│ │ ├── object_to_trait_big.png
│ │ ├── object_to_type_big.png
│ │ ├── ownderbg2.gif
│ │ ├── ownerbg.gif
│ │ ├── ownerbg2.gif
│ │ ├── package.png
│ │ ├── package_big.png
│ │ ├── packagesbg.gif
│ │ ├── ref-index.css
│ │ ├── remove.png
│ │ ├── scheduler.js
│ │ ├── selected-implicits.png
│ │ ├── selected-right-implicits.png
│ │ ├── selected-right.png
│ │ ├── selected.png
│ │ ├── selected2-right.png
│ │ ├── selected2.png
│ │ ├── signaturebg.gif
│ │ ├── signaturebg2.gif
│ │ ├── template.css
│ │ ├── template.js
│ │ ├── tools.tooltip.js
│ │ ├── trait.png
│ │ ├── trait_big.png
│ │ ├── trait_diagram.png
│ │ ├── trait_to_object_big.png
│ │ ├── type.png
│ │ ├── type_big.png
│ │ ├── type_diagram.png
│ │ ├── type_to_object_big.png
│ │ ├── typebg.gif
│ │ ├── unselected.png
│ │ └── valuemembersbg.gif
│ │ └── package.html
├── main
│ ├── resources
│ │ ├── ar.conf
│ │ ├── de.conf
│ │ ├── en.conf
│ │ ├── es.conf
│ │ ├── fr.conf
│ │ ├── in.conf
│ │ ├── ja.conf
│ │ ├── ms.conf
│ │ ├── nl.conf
│ │ ├── pt.conf
│ │ ├── reference.conf
│ │ ├── ru.conf
│ │ ├── sv.conf
│ │ └── tr.conf
│ └── scala
│ │ └── com
│ │ └── peoplepattern
│ │ └── text
│ │ ├── Implicits.scala
│ │ ├── JaLangBundle.scala
│ │ ├── LangBundle.scala
│ │ ├── LanguageIdentifier.scala
│ │ ├── StringUtil.scala
│ │ └── package.scala
└── test
│ └── scala
│ └── com
│ └── peoplepattern
│ └── text
│ ├── JaLangBundleSpec.scala
│ ├── LangBundleSpec.scala
│ ├── LanguageIdentifierSpec.scala
│ ├── StringUtilSpec.scala
│ └── StringWithAnalysisImplicitsSpec.scala
└── version.sbt
/.gitignore:
--------------------------------------------------------------------------------
1 | ## generic files to ignore
2 | *~
3 | *.DS_Store
4 | *.swp
5 | *.out
6 |
7 | # rails specific
8 | *.sqlite3
9 | config/database.yml
10 | log/*
11 | tmp/*
12 |
13 | # java specific
14 | *.class
15 |
16 | # python specific
17 | *.pyc
18 |
19 | # xcode/iphone specific
20 | build/*
21 | *.pbxuser
22 | *.mode2v3
23 | *.mode1v3
24 | *.perspective
25 | *.perspectivev3
26 | *~.nib
27 |
28 | # akka specific
29 | logs/*
30 |
31 | # sbt specific
32 | target/
33 | project/boot
34 | lib_managed/*
35 | project/build/target
36 | project/build/lib_managed
37 | project/build/src_managed
38 | project/plugins/lib_managed
39 | project/plugins/target
40 | project/plugins/src_managed
41 | project/plugins/project
42 |
43 | core/lib_managed
44 | core/target
45 | pubsub/lib_managed
46 | pubsub/target
47 |
48 | # eclipse specific
49 | .metadata
50 | jrebel.lic
51 | .settings
52 | .classpath
53 | .project
54 |
55 | .ensime*
56 | *.sublime-*
57 | .cache
58 |
59 | # intellij
60 | *.eml
61 | *.iml
62 | *.ipr
63 | *.iws
64 | .*.sw?
65 | .idea
66 |
67 | # paulp script
68 | /.lib/
69 |
70 | # other stuff
71 | nodes
72 | *.log
73 | .env
74 | .history
75 | .vagrant
76 | .bundle
77 | chef.json
78 | _site
79 |
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | sudo: false
2 | language: scala
3 | scala:
4 | - 2.10.6
5 | - 2.11.7
6 | jdk:
7 | - oraclejdk8
8 | script: "sbt ++$TRAVIS_SCALA_VERSION clean coverage test"
9 | after_success: "sbt ++$TRAVIS_SCALA_VERSION coveralls"
10 |
--------------------------------------------------------------------------------
/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | # Change Log
2 |
3 | ## [0.3] - 2015-12-21
4 |
5 | ### Added
6 | - Russian support
7 | - Japanese support
8 |
9 | ### Changed
10 |
11 | - Fixed configuration error, restored support for Dutch, Portuguese, Swedish,
12 | and Turkish
13 |
14 | ## [0.2] - 2015-12-10
15 |
16 | ### Added
17 | - Preliminary Arabic support
18 | - String utilities for URLs, char n-grams and white-space
19 |
20 | ### Changed
21 | - Switched to Typesafe config to manage language resources
22 | - Changed LangBundle interface
23 |
24 | ## [0.1] - 2015-12-02
25 |
26 | ### Added
27 | - Language identification and summarization
28 | - Tokenization
29 | - Stopword filtering
30 | - Terms (non-stopwords, words without symbols) and term n-gram helpers
31 | - String implicits wrapping
32 | - Open source under Apache License 2.0
33 | - Details to support Travis CI and Bintray publishing
34 |
35 | [0.3]: https://github.com/peoplepattern/lib-text/compare/v0.2...v0.3
36 | [0.2]: https://github.com/peoplepattern/lib-text/compare/v0.1...v0.2
37 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # lib-text
2 |
3 | A little text processing library for Scala.
4 |
5 | [](https://travis-ci.org/peoplepattern/lib-text)
6 | [](https://coveralls.io/github/peoplepattern/lib-text?branch=master)
7 | [](https://gitter.im/peoplepattern/lib-text?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
8 |
9 | ## Overview
10 |
11 | This is a little text processing library which supports language
12 | identification, tokenization, stopword filtering and provides some
13 | useful helper functions. The tokenization has been tuned to work
14 | well with text conventions commonly used in social media such as
15 | Twitter, and supports URLs, emoji, hashtags, emails and @-mentions
16 | cleanly. Stopword filtering is currently supported for
17 |
18 | - German
19 | - English
20 | - Spanish
21 | - French
22 | - Indonesian
23 | - Japanese
24 | - Malay
25 | - Dutch
26 | - Portuguese
27 | - Swedish
28 | - Turkish
29 | - Arabic
30 |
31 | More to come.
32 |
33 | ## Usage
34 |
35 | Add to your project dependencies:
36 |
37 | ```scala
38 | resolvers += "peoplepattern" at "https://dl.bintray.com/peoplepattern/maven/"
39 |
40 | libraryDependencies += "com.peoplepattern" %% "lib-text" % "0.3"
41 | ```
42 |
43 | ## Example
44 |
45 | ```scala
46 | import com.peoplepattern.text.Implicits._
47 |
48 | val txt = "Did you get your personalised print with your copy of #MadeintheAM on Black Friday? If not, there's still time! http://www.myplaydirect.com/one-direction"
49 |
50 | txt.lang
51 | // Some(en)
52 |
53 | txt.tokens
54 | // Vector(Did, you, get, your, personalised, print, with, your, copy, of, #MadeintheAM, on, Black, Friday, ?, If, not, ,, there's, still, time, !, http://www.myplaydirect.com/one-direction)
55 |
56 | txt.terms
57 | // Set(print, personalised, black, copy, friday, time)
58 |
59 | txt.termsPlus
60 | // Set(print, personalised, black, #madeintheam, copy, friday, time)
61 |
62 | txt.termBigrams
63 | // Set(black friday, personalised print)
64 | ```
65 |
66 | ## License
67 |
68 | lib-text is open source and licensed under the [Apache License 2.0](LICENSE.txt).
69 |
70 | ## Acknowledgements
71 |
72 | Developed with :heart: at [People Pattern Corporation](https://peoplepattern.com)
73 |
74 | [](https://peoplepattern.com)
75 |
--------------------------------------------------------------------------------
/build.sbt:
--------------------------------------------------------------------------------
1 | name := "lib-text"
2 |
3 | organization := "com.peoplepattern"
4 |
5 | scalaVersion := "2.10.6"
6 |
7 | scalacOptions in ThisBuild ++= Seq(
8 | "-unchecked",
9 | "-feature",
10 | "-deprecation",
11 | "-language:_",
12 | "-Xlint",
13 | "-Xfatal-warnings",
14 | "-Ywarn-dead-code",
15 | "-target:jvm-1.7",
16 | "-encoding",
17 | "UTF-8"
18 | )
19 |
20 | libraryDependencies ++= Seq(
21 | "com.carrotsearch" % "langid-java" % "1.0.0",
22 | "com.typesafe" % "config" % "1.3.0",
23 | "com.atilika.kuromoji" % "kuromoji-ipadic" % "0.9.0",
24 | "org.scalatest" %% "scalatest" % "2.2.5" % "test"
25 | )
26 |
27 | initialCommands := "import com.peoplepattern.text._"
28 |
29 | scalariformSettings
30 |
31 | licenses := Seq("Apache-2.0" -> url("http://www.apache.org/licenses/LICENSE-2.0"))
32 |
33 | homepage := Some(url("http://peoplepattern.github.io/lib-text"))
34 |
35 | crossScalaVersions := Seq("2.10.6", "2.11.7")
36 |
37 | releaseCrossBuild := true
38 |
39 | bintrayOrganization := Some("peoplepattern")
40 |
41 | bintrayReleaseOnPublish := true
42 |
43 | site.settings
44 |
45 | site.includeScaladoc()
46 |
47 | ghpages.settings
48 |
49 | git.remoteRepo := "git@github.com:peoplepattern/lib-text.git"
50 |
51 | site.jekyllSupport()
52 |
--------------------------------------------------------------------------------
/pp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/pp.png
--------------------------------------------------------------------------------
/project/build.properties:
--------------------------------------------------------------------------------
1 | sbt.version=0.13.8
2 |
--------------------------------------------------------------------------------
/project/plugins.sbt:
--------------------------------------------------------------------------------
1 | resolvers += Resolver.bintrayRepo("typesafe", "releases")
2 |
3 | addSbtPlugin("com.typesafe.sbt" % "sbt-scalariform" % "1.3.0")
4 |
5 | addSbtPlugin("com.github.gseitz" % "sbt-release" % "1.0.0")
6 |
7 | addSbtPlugin("me.lessis" % "bintray-sbt" % "0.3.0")
8 |
9 | addSbtPlugin("com.typesafe.sbt" % "sbt-ghpages" % "0.5.4")
10 |
11 | addSbtPlugin("org.scoverage" % "sbt-scoverage" % "1.0.4")
12 |
13 | addSbtPlugin("org.scoverage" % "sbt-coveralls" % "1.0.0")
14 |
--------------------------------------------------------------------------------
/src/jekyll/404.html:
--------------------------------------------------------------------------------
1 | ---
2 | layout: default
3 | title: "404: Page not found"
4 | permalink: 404.html
5 | ---
6 |
7 |
8 |
404: Page not found
9 |
Sorry, we've misplaced that URL or it's pointing to something that doesn't exist. Head back home to try finding it again.
10 |
11 |
--------------------------------------------------------------------------------
/src/jekyll/_config.yml:
--------------------------------------------------------------------------------
1 | # Permalinks
2 | #
3 | # Use of `relative_permalinks` ensures post links from the index work properly.
4 | permalink: pretty
5 | relative_permalinks: true
6 |
7 | # Setup
8 | title: lib-text
9 | tagline: 'A little text processing library'
10 | description: 'A text processing library in Scala. Made at People Pattern .'
11 | url: http://peoplepattern.github.io/lib-text
12 | baseurl: '/lib-text'
13 |
14 | # About/contact
15 | author:
16 | name: Elias Ponvert
17 | url: https://eponvert.github.io
18 | email: elias@peoplepattern.com
19 |
20 | # Custom vars
21 |
22 | version: 0.1
23 |
24 | github:
25 | repo: https://github.com/peoplepattern/lib-text
26 |
--------------------------------------------------------------------------------
/src/jekyll/_includes/head.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 | {% if page.title == "Home" %}
11 | {{ site.title }} · {{ site.tagline }}
12 | {% else %}
13 | {{ page.title }} · {{ site.title }}
14 | {% endif %}
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/src/jekyll/_includes/sidebar.html:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
6 |
30 |
--------------------------------------------------------------------------------
/src/jekyll/_layouts/default.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | {% include head.html %}
5 |
6 |
7 |
8 | {% include sidebar.html %}
9 |
10 |
12 |
13 |
21 |
22 |
23 | {{ content }}
24 |
25 |
26 |
27 |
28 |
29 |
46 |
47 |
48 |
--------------------------------------------------------------------------------
/src/jekyll/_layouts/page.html:
--------------------------------------------------------------------------------
1 | ---
2 | layout: default
3 | ---
4 |
5 |
6 |
{{ page.title }}
7 |
8 |
9 |
10 | {{ content }}
11 |
12 |
--------------------------------------------------------------------------------
/src/jekyll/index.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: page
3 | title: A little text processing library
4 | ---
5 |
6 | This is lib-text, a little text processing library. It supports language
7 | identification, tokenization, stopword filtering and provides some
8 | useful helper functions. The tokenization has been tuned to work
9 | well with text conventions commonly used in social media such as
10 | Twitter, and supports URLs, emoji, hashtags, emails and @-mentions
11 | cleanly. Stopword filtering is currently supported for
12 |
13 | - German
14 | - English
15 | - Spanish
16 | - French
17 | - Indonesian
18 | - Japanese
19 | - Malay
20 | - Dutch
21 | - Portuguese
22 | - Swedish
23 | - Turkish
24 |
25 | With more to come.
26 |
27 | ## Usage
28 |
29 | Add to your build.sbt file:
30 |
31 | resolvers += "peoplepattern" at "https://dl.bintray.com/peoplepattern/maven/"
32 |
33 | libraryDependencies += "com.peoplepattern" %% "lib-text" % "0.3"
34 |
35 | ## Example
36 |
37 | import com.peoplepattern.text.Implicits._
38 |
39 | val txt = "Did you get your personalised print with your copy of #MadeintheAM on Black Friday? If not, there's still time! http://www.myplaydirect.com/one-direction"
40 |
41 | txt.lang
42 | // Some(en)
43 |
44 | txt.tokens
45 | // Vector(Did, you, get, your, personalised, print, with, your, copy, of, #MadeintheAM, on, Black, Friday, ?, If, not, ,, there's, still, time, !, http://www.myplaydirect.com/one-direction)
46 |
47 | txt.terms
48 | // Set(print, personalised, black, copy, friday, time)
49 |
50 | txt.termsPlus
51 | // Set(print, personalised, black, #madeintheam, copy, friday, time)
52 |
53 | txt.termBigrams
54 | // Set(black friday, personalised print)
55 |
56 |
57 | ## Scaladoc
58 |
59 | Full API docs are available, for each published version:
60 |
61 | - [v0.3]({{ site.baseurl }}/v0.3/api)
62 | - [v0.2]({{ site.baseurl }}/v0.2/api)
63 | - [v0.1]({{ site.baseurl }}/v0.1/api)
64 |
65 |
66 | Developed with ❤️ at [People Pattern Corporation](https://peoplepattern.com)
67 |
68 | [](https://peoplepattern.com)
69 |
--------------------------------------------------------------------------------
/src/jekyll/public/css/syntax.css:
--------------------------------------------------------------------------------
1 | .highlight .hll { background-color: #ffc; }
2 | .highlight .c { color: #999; } /* Comment */
3 | .highlight .err { color: #a00; background-color: #faa } /* Error */
4 | .highlight .k { color: #069; } /* Keyword */
5 | .highlight .o { color: #555 } /* Operator */
6 | .highlight .cm { color: #09f; font-style: italic } /* Comment.Multiline */
7 | .highlight .cp { color: #099 } /* Comment.Preproc */
8 | .highlight .c1 { color: #999; } /* Comment.Single */
9 | .highlight .cs { color: #999; } /* Comment.Special */
10 | .highlight .gd { background-color: #fcc; border: 1px solid #c00 } /* Generic.Deleted */
11 | .highlight .ge { font-style: italic } /* Generic.Emph */
12 | .highlight .gr { color: #f00 } /* Generic.Error */
13 | .highlight .gh { color: #030; } /* Generic.Heading */
14 | .highlight .gi { background-color: #cfc; border: 1px solid #0c0 } /* Generic.Inserted */
15 | .highlight .go { color: #aaa } /* Generic.Output */
16 | .highlight .gp { color: #009; } /* Generic.Prompt */
17 | .highlight .gs { } /* Generic.Strong */
18 | .highlight .gu { color: #030; } /* Generic.Subheading */
19 | .highlight .gt { color: #9c6 } /* Generic.Traceback */
20 | .highlight .kc { color: #069; } /* Keyword.Constant */
21 | .highlight .kd { color: #069; } /* Keyword.Declaration */
22 | .highlight .kn { color: #069; } /* Keyword.Namespace */
23 | .highlight .kp { color: #069 } /* Keyword.Pseudo */
24 | .highlight .kr { color: #069; } /* Keyword.Reserved */
25 | .highlight .kt { color: #078; } /* Keyword.Type */
26 | .highlight .m { color: #f60 } /* Literal.Number */
27 | .highlight .s { color: #d44950 } /* Literal.String */
28 | .highlight .na { color: #4f9fcf } /* Name.Attribute */
29 | .highlight .nb { color: #366 } /* Name.Builtin */
30 | .highlight .nc { color: #0a8; } /* Name.Class */
31 | .highlight .no { color: #360 } /* Name.Constant */
32 | .highlight .nd { color: #99f } /* Name.Decorator */
33 | .highlight .ni { color: #999; } /* Name.Entity */
34 | .highlight .ne { color: #c00; } /* Name.Exception */
35 | .highlight .nf { color: #c0f } /* Name.Function */
36 | .highlight .nl { color: #99f } /* Name.Label */
37 | .highlight .nn { color: #0cf; } /* Name.Namespace */
38 | .highlight .nt { color: #2f6f9f; } /* Name.Tag */
39 | .highlight .nv { color: #033 } /* Name.Variable */
40 | .highlight .ow { color: #000; } /* Operator.Word */
41 | .highlight .w { color: #bbb } /* Text.Whitespace */
42 | .highlight .mf { color: #f60 } /* Literal.Number.Float */
43 | .highlight .mh { color: #f60 } /* Literal.Number.Hex */
44 | .highlight .mi { color: #f60 } /* Literal.Number.Integer */
45 | .highlight .mo { color: #f60 } /* Literal.Number.Oct */
46 | .highlight .sb { color: #c30 } /* Literal.String.Backtick */
47 | .highlight .sc { color: #c30 } /* Literal.String.Char */
48 | .highlight .sd { color: #c30; font-style: italic } /* Literal.String.Doc */
49 | .highlight .s2 { color: #c30 } /* Literal.String.Double */
50 | .highlight .se { color: #c30; } /* Literal.String.Escape */
51 | .highlight .sh { color: #c30 } /* Literal.String.Heredoc */
52 | .highlight .si { color: #a00 } /* Literal.String.Interpol */
53 | .highlight .sx { color: #c30 } /* Literal.String.Other */
54 | .highlight .sr { color: #3aa } /* Literal.String.Regex */
55 | .highlight .s1 { color: #c30 } /* Literal.String.Single */
56 | .highlight .ss { color: #fc3 } /* Literal.String.Symbol */
57 | .highlight .bp { color: #366 } /* Name.Builtin.Pseudo */
58 | .highlight .vc { color: #033 } /* Name.Variable.Class */
59 | .highlight .vg { color: #033 } /* Name.Variable.Global */
60 | .highlight .vi { color: #033 } /* Name.Variable.Instance */
61 | .highlight .il { color: #f60 } /* Literal.Number.Integer.Long */
62 |
63 | .css .o,
64 | .css .o + .nt,
65 | .css .nt + .nt { color: #999; }
66 |
--------------------------------------------------------------------------------
/src/jekyll/public/pp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/public/pp.png
--------------------------------------------------------------------------------
/src/jekyll/v0.1/api/com/package.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | com - com
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
27 |
28 |
29 |
30 |
39 |
40 |
41 |
42 |
43 | package
44 |
45 |
46 | com
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
Visibility
59 |
Public All
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
Value Members
73 |
74 |
75 |
76 |
77 |
78 |
79 | package
80 |
81 |
82 | peoplepattern
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
Ungrouped
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
--------------------------------------------------------------------------------
/src/jekyll/v0.1/api/index.js:
--------------------------------------------------------------------------------
1 | Index.PACKAGES = {"com" : [], "com.peoplepattern" : [], "com.peoplepattern.text" : [{"object" : "com\/peoplepattern\/text\/Implicits$.html", "name" : "com.peoplepattern.text.Implicits"}, {"object" : "com\/peoplepattern\/text\/LangBundle$.html", "trait" : "com\/peoplepattern\/text\/LangBundle.html", "name" : "com.peoplepattern.text.LangBundle"}, {"object" : "com\/peoplepattern\/text\/LanguageIdentifier$.html", "trait" : "com\/peoplepattern\/text\/LanguageIdentifier.html", "name" : "com.peoplepattern.text.LanguageIdentifier"}]};
--------------------------------------------------------------------------------
/src/jekyll/v0.1/api/index/index-b.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
17 |
bundleForLang
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/src/jekyll/v0.1/api/index/index-c.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
20 |
21 |
--------------------------------------------------------------------------------
/src/jekyll/v0.1/api/index/index-d.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
17 |
defaultFrequency
18 |
19 |
20 |
defaultMinTextSize
21 |
22 |
23 |
defaultThreshold
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/jekyll/v0.1/api/index/index-e.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
20 |
21 |
--------------------------------------------------------------------------------
/src/jekyll/v0.1/api/index/index-f.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
17 |
18 |
--------------------------------------------------------------------------------
/src/jekyll/v0.1/api/index/index-i.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
20 |
isContentTerm
21 |
22 |
29 |
30 |
--------------------------------------------------------------------------------
/src/jekyll/v0.1/api/index/index-j.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
17 |
18 |
--------------------------------------------------------------------------------
/src/jekyll/v0.1/api/index/index-l.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
LangBundle
15 |
16 |
17 |
LanguageIdentifier
18 |
19 |
26 |
27 |
--------------------------------------------------------------------------------
/src/jekyll/v0.1/api/index/index-m.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
23 |
24 |
--------------------------------------------------------------------------------
/src/jekyll/v0.1/api/index/index-n.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
17 |
18 |
--------------------------------------------------------------------------------
/src/jekyll/v0.1/api/index/index-p.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
peoplepattern
15 |
16 |
20 |
21 |
--------------------------------------------------------------------------------
/src/jekyll/v0.1/api/index/index-s.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
StringWithAnalysis
15 |
16 |
17 |
srcFromResource
18 |
19 |
29 |
30 |
--------------------------------------------------------------------------------
/src/jekyll/v0.1/api/index/index-t.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
termBigrams
15 |
16 |
17 |
termNgrams
18 |
19 |
20 |
termTrigrams
21 |
22 |
38 |
39 |
--------------------------------------------------------------------------------
/src/jekyll/v0.1/api/index/index-u.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
17 |
18 |
--------------------------------------------------------------------------------
/src/jekyll/v0.1/api/lib/arrow-down.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.1/api/lib/arrow-down.png
--------------------------------------------------------------------------------
/src/jekyll/v0.1/api/lib/arrow-right.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.1/api/lib/arrow-right.png
--------------------------------------------------------------------------------
/src/jekyll/v0.1/api/lib/class.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.1/api/lib/class.png
--------------------------------------------------------------------------------
/src/jekyll/v0.1/api/lib/class_big.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.1/api/lib/class_big.png
--------------------------------------------------------------------------------
/src/jekyll/v0.1/api/lib/class_diagram.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.1/api/lib/class_diagram.png
--------------------------------------------------------------------------------
/src/jekyll/v0.1/api/lib/class_to_object_big.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.1/api/lib/class_to_object_big.png
--------------------------------------------------------------------------------
/src/jekyll/v0.1/api/lib/constructorsbg.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.1/api/lib/constructorsbg.gif
--------------------------------------------------------------------------------
/src/jekyll/v0.1/api/lib/conversionbg.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.1/api/lib/conversionbg.gif
--------------------------------------------------------------------------------
/src/jekyll/v0.1/api/lib/defbg-blue.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.1/api/lib/defbg-blue.gif
--------------------------------------------------------------------------------
/src/jekyll/v0.1/api/lib/defbg-green.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.1/api/lib/defbg-green.gif
--------------------------------------------------------------------------------
/src/jekyll/v0.1/api/lib/diagrams.css:
--------------------------------------------------------------------------------
1 | .diagram-container
2 | {
3 | display: none;
4 | }
5 |
6 | .diagram
7 | {
8 | overflow: hidden;
9 | padding-top:15px;
10 | }
11 |
12 | .diagram svg
13 | {
14 | display: block;
15 | position: absolute;
16 | visibility: hidden;
17 | margin: auto;
18 | }
19 |
20 | .diagram-help
21 | {
22 | float:right;
23 | display:none;
24 | }
25 |
26 | .magnifying
27 | {
28 | cursor: -webkit-zoom-in ! important;
29 | cursor: -moz-zoom-in ! important;
30 | cursor: pointer;
31 | }
32 |
33 | #close-link
34 | {
35 | position: absolute;
36 | z-index: 100;
37 | font-family: Arial, sans-serif;
38 | font-size: 10pt;
39 | text-decoration: underline;
40 | color: #315479;
41 | }
42 |
43 | #close:hover
44 | {
45 | text-decoration: none;
46 | }
47 |
48 | svg a
49 | {
50 | cursor:pointer;
51 | }
52 |
53 | svg text
54 | {
55 | font-size: 10px;
56 | }
57 |
58 | /* try to move the node text 1px in order to be vertically
59 | centered (does not work in all browsers) */
60 | svg .node text
61 | {
62 | transform: translate(0px,1px);
63 | -ms-transform: translate(0px,1px);
64 | -webkit-transform: translate(0px,1px);
65 | -o-transform: translate(0px,1px);
66 | -moz-transform: translate(0px,1px);
67 | }
68 |
69 | /* hover effect for edges */
70 |
71 | svg .edge.over text,
72 | svg .edge.implicit-incoming.over polygon,
73 | svg .edge.implicit-outgoing.over polygon
74 | {
75 | fill: #202020;
76 | }
77 |
78 | svg .edge.over path,
79 | svg .edge.over polygon
80 | {
81 | stroke: #202020;
82 | }
83 |
84 | /* hover effect for nodes in class diagrams */
85 |
86 | svg.class-diagram .node
87 | {
88 | opacity: 0.75;
89 | }
90 |
91 | svg.class-diagram .node.this
92 | {
93 | opacity: 1.0;
94 | }
95 |
96 | svg.class-diagram .node.over
97 | {
98 | opacity: 1.0;
99 | }
100 |
101 | svg .node.over polygon
102 | {
103 | stroke: #202020;
104 | }
105 |
106 | /* hover effect for nodes in package diagrams */
107 |
108 | svg.package-diagram .node.class.over polygon,
109 | svg.class-diagram .node.this.class.over polygon
110 | {
111 | fill: #098552;
112 | fill: #04663e;
113 | }
114 |
115 | svg.package-diagram .node.trait.over polygon,
116 | svg.class-diagram .node.this.trait.over polygon
117 | {
118 | fill: #3c7b9b;
119 | fill: #235d7b;
120 | }
121 |
122 | svg.package-diagram .node.type.over polygon,
123 | svg.class-diagram .node.this.type.over polygon
124 | {
125 | fill: #098552;
126 | fill: #04663e;
127 | }
128 |
129 |
130 | svg.package-diagram .node.object.over polygon
131 | {
132 | fill: #183377;
133 | }
134 |
135 | svg.package-diagram .node.outside.over polygon
136 | {
137 | fill: #d4d4d4;
138 | }
139 |
140 | svg.package-diagram .node.default.over polygon
141 | {
142 | fill: #d4d4d4;
143 | }
144 |
--------------------------------------------------------------------------------
/src/jekyll/v0.1/api/lib/filter_box_left.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.1/api/lib/filter_box_left.png
--------------------------------------------------------------------------------
/src/jekyll/v0.1/api/lib/filter_box_left2.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.1/api/lib/filter_box_left2.gif
--------------------------------------------------------------------------------
/src/jekyll/v0.1/api/lib/filter_box_right.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.1/api/lib/filter_box_right.png
--------------------------------------------------------------------------------
/src/jekyll/v0.1/api/lib/filterbg.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.1/api/lib/filterbg.gif
--------------------------------------------------------------------------------
/src/jekyll/v0.1/api/lib/filterboxbarbg.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.1/api/lib/filterboxbarbg.gif
--------------------------------------------------------------------------------
/src/jekyll/v0.1/api/lib/filterboxbarbg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.1/api/lib/filterboxbarbg.png
--------------------------------------------------------------------------------
/src/jekyll/v0.1/api/lib/filterboxbg.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.1/api/lib/filterboxbg.gif
--------------------------------------------------------------------------------
/src/jekyll/v0.1/api/lib/fullcommenttopbg.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.1/api/lib/fullcommenttopbg.gif
--------------------------------------------------------------------------------
/src/jekyll/v0.1/api/lib/modernizr.custom.js:
--------------------------------------------------------------------------------
1 | /* Modernizr 2.5.3 (Custom Build) | MIT & BSD
2 | * Build: http://www.modernizr.com/download/#-inlinesvg
3 | */
4 | ;window.Modernizr=function(a,b,c){function u(a){i.cssText=a}function v(a,b){return u(prefixes.join(a+";")+(b||""))}function w(a,b){return typeof a===b}function x(a,b){return!!~(""+a).indexOf(b)}function y(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:w(f,"function")?f.bind(d||b):f}return!1}var d="2.5.3",e={},f=b.documentElement,g="modernizr",h=b.createElement(g),i=h.style,j,k={}.toString,l={svg:"http://www.w3.org/2000/svg"},m={},n={},o={},p=[],q=p.slice,r,s={}.hasOwnProperty,t;!w(s,"undefined")&&!w(s.call,"undefined")?t=function(a,b){return s.call(a,b)}:t=function(a,b){return b in a&&w(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;var d=q.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(q.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(q.call(arguments)))};return e}),m.inlinesvg=function(){var a=b.createElement("div");return a.innerHTML=" ",(a.firstChild&&a.firstChild.namespaceURI)==l.svg};for(var z in m)t(m,z)&&(r=z.toLowerCase(),e[r]=m[z](),p.push((e[r]?"":"no-")+r));return u(""),h=j=null,e._version=d,e}(this,this.document);
--------------------------------------------------------------------------------
/src/jekyll/v0.1/api/lib/navigation-li-a.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.1/api/lib/navigation-li-a.png
--------------------------------------------------------------------------------
/src/jekyll/v0.1/api/lib/navigation-li.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.1/api/lib/navigation-li.png
--------------------------------------------------------------------------------
/src/jekyll/v0.1/api/lib/object.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.1/api/lib/object.png
--------------------------------------------------------------------------------
/src/jekyll/v0.1/api/lib/object_big.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.1/api/lib/object_big.png
--------------------------------------------------------------------------------
/src/jekyll/v0.1/api/lib/object_diagram.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.1/api/lib/object_diagram.png
--------------------------------------------------------------------------------
/src/jekyll/v0.1/api/lib/object_to_class_big.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.1/api/lib/object_to_class_big.png
--------------------------------------------------------------------------------
/src/jekyll/v0.1/api/lib/object_to_trait_big.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.1/api/lib/object_to_trait_big.png
--------------------------------------------------------------------------------
/src/jekyll/v0.1/api/lib/object_to_type_big.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.1/api/lib/object_to_type_big.png
--------------------------------------------------------------------------------
/src/jekyll/v0.1/api/lib/ownderbg2.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.1/api/lib/ownderbg2.gif
--------------------------------------------------------------------------------
/src/jekyll/v0.1/api/lib/ownerbg.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.1/api/lib/ownerbg.gif
--------------------------------------------------------------------------------
/src/jekyll/v0.1/api/lib/ownerbg2.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.1/api/lib/ownerbg2.gif
--------------------------------------------------------------------------------
/src/jekyll/v0.1/api/lib/package.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.1/api/lib/package.png
--------------------------------------------------------------------------------
/src/jekyll/v0.1/api/lib/package_big.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.1/api/lib/package_big.png
--------------------------------------------------------------------------------
/src/jekyll/v0.1/api/lib/packagesbg.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.1/api/lib/packagesbg.gif
--------------------------------------------------------------------------------
/src/jekyll/v0.1/api/lib/permalink.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.1/api/lib/permalink.png
--------------------------------------------------------------------------------
/src/jekyll/v0.1/api/lib/ref-index.css:
--------------------------------------------------------------------------------
1 | body {
2 | font-size: 10pt;
3 | font-family: Arial, sans-serif;
4 | }
5 |
6 | a {
7 | color:#315479;
8 | }
9 |
10 | .letters {
11 | width:100%;
12 | text-align:center;
13 | margin:0.6em;
14 | padding:0.1em;
15 | border-bottom:1px solid gray;
16 | }
17 |
18 | .entry {
19 | border-bottom: 1px solid lightgray;
20 | padding: 5px 0 8px;
21 | }
22 |
23 | .name {
24 | /* background-color:#E5E5E5; */
25 | }
26 |
27 | .occurrences {
28 | margin-left: 1em;
29 | margin-top: 5px;
30 | }
--------------------------------------------------------------------------------
/src/jekyll/v0.1/api/lib/remove.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.1/api/lib/remove.png
--------------------------------------------------------------------------------
/src/jekyll/v0.1/api/lib/scheduler.js:
--------------------------------------------------------------------------------
1 | // © 2010 EPFL/LAMP
2 | // code by Gilles Dubochet
3 |
4 | function Scheduler() {
5 | var scheduler = this;
6 | var resolution = 0;
7 | this.timeout = undefined;
8 | this.queues = new Array(0); // an array of work pacakges indexed by index in the labels table.
9 | this.labels = new Array(0); // an indexed array of labels indexed by priority. This should be short.
10 | this.label = function(name, priority) {
11 | this.name = name;
12 | this.priority = priority;
13 | }
14 | this.work = function(fn, self, args) {
15 | this.fn = fn;
16 | this.self = self;
17 | this.args = args;
18 | }
19 | this.addLabel = function(name, priority) {
20 | var idx = 0;
21 | while (idx < scheduler.queues.length && scheduler.labels[idx].priority <= priority) { idx = idx + 1; }
22 | scheduler.labels.splice(idx, 0, new scheduler.label(name, priority));
23 | scheduler.queues.splice(idx, 0, new Array(0));
24 | }
25 | this.clearLabel = function(name) {
26 | var idx = 0;
27 | while (idx < scheduler.queues.length && scheduler.labels[idx].name != name) { idx = idx + 1; }
28 | if (idx < scheduler.queues.length && scheduler.labels[i].name == name) {
29 | scheduler.labels.splice(idx, 1);
30 | scheduler.queues.splice(idx, 1);
31 | }
32 | }
33 | this.nextWork = function() {
34 | var fn = undefined;
35 | var idx = 0;
36 | while (idx < scheduler.queues.length && scheduler.queues[idx].length == 0) { idx = idx + 1; }
37 | if (idx < scheduler.queues.length && scheduler.queues[idx].length > 0) {
38 | var fn = scheduler.queues[idx].shift();
39 | }
40 | return fn;
41 | }
42 | this.add = function(labelName, fn, self, args) {
43 | var doWork = function() {
44 | scheduler.timeout = setTimeout(function() {
45 | var work = scheduler.nextWork();
46 | if (work != undefined) {
47 | if (work.args == undefined) { work.args = new Array(0); }
48 | work.fn.apply(work.self, work.args);
49 | doWork();
50 | }
51 | else {
52 | scheduler.timeout = undefined;
53 | }
54 | }, resolution);
55 | }
56 | var idx = 0;
57 | while (idx < scheduler.labels.length && scheduler.labels[idx].name != labelName) { idx = idx + 1; }
58 | if (idx < scheduler.queues.length && scheduler.labels[idx].name == labelName) {
59 | scheduler.queues[idx].push(new scheduler.work(fn, self, args));
60 | if (scheduler.timeout == undefined) doWork();
61 | }
62 | else throw("queue for add is non existant");
63 | }
64 | this.clear = function(labelName) {
65 | var idx = 0;
66 | while (idx < scheduler.labels.length && scheduler.labels[idx].name != labelName) { idx = idx + 1; }
67 | if (idx < scheduler.queues.length && scheduler.labels[idx].name == labelName) {
68 | scheduler.queues[idx] = new Array();
69 | }
70 | }
71 | };
72 |
--------------------------------------------------------------------------------
/src/jekyll/v0.1/api/lib/selected-implicits.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.1/api/lib/selected-implicits.png
--------------------------------------------------------------------------------
/src/jekyll/v0.1/api/lib/selected-right-implicits.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.1/api/lib/selected-right-implicits.png
--------------------------------------------------------------------------------
/src/jekyll/v0.1/api/lib/selected-right.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.1/api/lib/selected-right.png
--------------------------------------------------------------------------------
/src/jekyll/v0.1/api/lib/selected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.1/api/lib/selected.png
--------------------------------------------------------------------------------
/src/jekyll/v0.1/api/lib/selected2-right.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.1/api/lib/selected2-right.png
--------------------------------------------------------------------------------
/src/jekyll/v0.1/api/lib/selected2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.1/api/lib/selected2.png
--------------------------------------------------------------------------------
/src/jekyll/v0.1/api/lib/signaturebg.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.1/api/lib/signaturebg.gif
--------------------------------------------------------------------------------
/src/jekyll/v0.1/api/lib/signaturebg2.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.1/api/lib/signaturebg2.gif
--------------------------------------------------------------------------------
/src/jekyll/v0.1/api/lib/tools.tooltip.js:
--------------------------------------------------------------------------------
1 | /*
2 | * tools.tooltip 1.1.3 - Tooltips done right.
3 | *
4 | * Copyright (c) 2009 Tero Piirainen
5 | * http://flowplayer.org/tools/tooltip.html
6 | *
7 | * Dual licensed under MIT and GPL 2+ licenses
8 | * http://www.opensource.org/licenses
9 | *
10 | * Launch : November 2008
11 | * Date: ${date}
12 | * Revision: ${revision}
13 | */
14 | (function(c){var d=[];c.tools=c.tools||{};c.tools.tooltip={version:"1.1.3",conf:{effect:"toggle",fadeOutSpeed:"fast",tip:null,predelay:0,delay:30,opacity:1,lazy:undefined,position:["top","center"],offset:[0,0],cancelDefault:true,relative:false,oneInstance:true,events:{def:"mouseover,mouseout",input:"focus,blur",widget:"focus mouseover,blur mouseout",tooltip:"mouseover,mouseout"},api:false},addEffect:function(e,g,f){b[e]=[g,f]}};var b={toggle:[function(e){var f=this.getConf(),g=this.getTip(),h=f.opacity;if(h<1){g.css({opacity:h})}g.show();e.call()},function(e){this.getTip().hide();e.call()}],fade:[function(e){this.getTip().fadeIn(this.getConf().fadeInSpeed,e)},function(e){this.getTip().fadeOut(this.getConf().fadeOutSpeed,e)}]};function a(f,g){var p=this,k=c(this);f.data("tooltip",p);var l=f.next();if(g.tip){l=c(g.tip);if(l.length>1){l=f.nextAll(g.tip).eq(0);if(!l.length){l=f.parent().nextAll(g.tip).eq(0)}}}function o(u){var t=g.relative?f.position().top:f.offset().top,s=g.relative?f.position().left:f.offset().left,v=g.position[0];t-=l.outerHeight()-g.offset[0];s+=f.outerWidth()+g.offset[1];var q=l.outerHeight()+f.outerHeight();if(v=="center"){t+=q/2}if(v=="bottom"){t+=q}v=g.position[1];var r=l.outerWidth()+f.outerWidth();if(v=="center"){s-=r/2}if(v=="left"){s-=r}return{top:t,left:s}}var i=f.is(":input"),e=i&&f.is(":checkbox, :radio, select, :button"),h=f.attr("type"),n=g.events[h]||g.events[i?(e?"widget":"input"):"def"];n=n.split(/,\s*/);if(n.length!=2){throw"Tooltip: bad events configuration for "+h}f.bind(n[0],function(r){if(g.oneInstance){c.each(d,function(){this.hide()})}var q=l.data("trigger");if(q&&q[0]!=this){l.hide().stop(true,true)}r.target=this;p.show(r);n=g.events.tooltip.split(/,\s*/);l.bind(n[0],function(){p.show(r)});if(n[1]){l.bind(n[1],function(){p.hide(r)})}});f.bind(n[1],function(q){p.hide(q)});if(!c.browser.msie&&!i&&!g.predelay){f.mousemove(function(){if(!p.isShown()){f.triggerHandler("mouseover")}})}if(g.opacity<1){l.css("opacity",g.opacity)}var m=0,j=f.attr("title");if(j&&g.cancelDefault){f.removeAttr("title");f.data("title",j)}c.extend(p,{show:function(r){if(r){f=c(r.target)}clearTimeout(l.data("timer"));if(l.is(":animated")||l.is(":visible")){return p}function q(){l.data("trigger",f);var t=o(r);if(g.tip&&j){l.html(f.data("title"))}r=r||c.Event();r.type="onBeforeShow";k.trigger(r,[t]);if(r.isDefaultPrevented()){return p}t=o(r);l.css({position:"absolute",top:t.top,left:t.left});var s=b[g.effect];if(!s){throw'Nonexistent effect "'+g.effect+'"'}s[0].call(p,function(){r.type="onShow";k.trigger(r)})}if(g.predelay){clearTimeout(m);m=setTimeout(q,g.predelay)}else{q()}return p},hide:function(r){clearTimeout(l.data("timer"));clearTimeout(m);if(!l.is(":visible")){return}function q(){r=r||c.Event();r.type="onBeforeHide";k.trigger(r);if(r.isDefaultPrevented()){return}b[g.effect][1].call(p,function(){r.type="onHide";k.trigger(r)})}if(g.delay&&r){l.data("timer",setTimeout(q,g.delay))}else{q()}return p},isShown:function(){return l.is(":visible, :animated")},getConf:function(){return g},getTip:function(){return l},getTrigger:function(){return f},bind:function(q,r){k.bind(q,r);return p},onHide:function(q){return this.bind("onHide",q)},onBeforeShow:function(q){return this.bind("onBeforeShow",q)},onShow:function(q){return this.bind("onShow",q)},onBeforeHide:function(q){return this.bind("onBeforeHide",q)},unbind:function(q){k.unbind(q);return p}});c.each(g,function(q,r){if(c.isFunction(r)){p.bind(q,r)}})}c.prototype.tooltip=function(e){var f=this.eq(typeof e=="number"?e:0).data("tooltip");if(f){return f}var g=c.extend(true,{},c.tools.tooltip.conf);if(c.isFunction(e)){e={onBeforeShow:e}}else{if(typeof e=="string"){e={tip:e}}}e=c.extend(true,g,e);if(typeof e.position=="string"){e.position=e.position.split(/,?\s/)}if(e.lazy!==false&&(e.lazy===true||this.length>20)){this.one("mouseover",function(h){f=new a(c(this),e);f.show(h);d.push(f)})}else{this.each(function(){f=new a(c(this),e);d.push(f)})}return e.api?f:this}})(jQuery);
--------------------------------------------------------------------------------
/src/jekyll/v0.1/api/lib/trait.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.1/api/lib/trait.png
--------------------------------------------------------------------------------
/src/jekyll/v0.1/api/lib/trait_big.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.1/api/lib/trait_big.png
--------------------------------------------------------------------------------
/src/jekyll/v0.1/api/lib/trait_diagram.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.1/api/lib/trait_diagram.png
--------------------------------------------------------------------------------
/src/jekyll/v0.1/api/lib/trait_to_object_big.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.1/api/lib/trait_to_object_big.png
--------------------------------------------------------------------------------
/src/jekyll/v0.1/api/lib/type.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.1/api/lib/type.png
--------------------------------------------------------------------------------
/src/jekyll/v0.1/api/lib/type_big.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.1/api/lib/type_big.png
--------------------------------------------------------------------------------
/src/jekyll/v0.1/api/lib/type_diagram.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.1/api/lib/type_diagram.png
--------------------------------------------------------------------------------
/src/jekyll/v0.1/api/lib/type_to_object_big.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.1/api/lib/type_to_object_big.png
--------------------------------------------------------------------------------
/src/jekyll/v0.1/api/lib/typebg.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.1/api/lib/typebg.gif
--------------------------------------------------------------------------------
/src/jekyll/v0.1/api/lib/unselected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.1/api/lib/unselected.png
--------------------------------------------------------------------------------
/src/jekyll/v0.1/api/lib/valuemembersbg.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.1/api/lib/valuemembersbg.gif
--------------------------------------------------------------------------------
/src/jekyll/v0.1/api/package.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | root - _root_
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
root package
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 | package
44 |
45 |
46 | root
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
Visibility
59 |
Public All
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
Value Members
73 |
74 |
75 |
76 |
77 |
78 |
79 | package
80 |
81 |
82 | com
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
Ungrouped
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
--------------------------------------------------------------------------------
/src/jekyll/v0.2/api/com/package.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | com - com
6 |
7 |
8 |
9 |
10 |
11 |
12 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
com
30 |
31 |
32 |
33 |
34 |
35 | package
36 |
37 |
38 | com
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
Visibility
51 |
Public All
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
Value Members
65 |
66 |
67 |
68 |
69 |
70 |
71 | package
72 |
73 |
74 | peoplepattern
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
Ungrouped
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
--------------------------------------------------------------------------------
/src/jekyll/v0.2/api/com/peoplepattern/package.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | peoplepattern - com.peoplepattern
6 |
7 |
8 |
9 |
10 |
11 |
12 |
23 |
24 |
25 |
26 |
27 |
28 |
com
29 |
peoplepattern
30 |
31 |
32 |
33 |
34 |
35 | package
36 |
37 |
38 | peoplepattern
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
Visibility
51 |
Public All
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
Value Members
65 |
66 |
67 |
68 |
69 |
70 |
71 | package
72 |
73 |
74 | text
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
Ungrouped
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
--------------------------------------------------------------------------------
/src/jekyll/v0.2/api/index.js:
--------------------------------------------------------------------------------
1 | Index.PACKAGES = {"com" : [], "com.peoplepattern" : [], "com.peoplepattern.text" : [{"object" : "com\/peoplepattern\/text\/Implicits$.html", "name" : "com.peoplepattern.text.Implicits"}, {"object" : "com\/peoplepattern\/text\/LangBundle$.html", "trait" : "com\/peoplepattern\/text\/LangBundle.html", "name" : "com.peoplepattern.text.LangBundle"}, {"object" : "com\/peoplepattern\/text\/LanguageIdentifier$.html", "trait" : "com\/peoplepattern\/text\/LanguageIdentifier.html", "name" : "com.peoplepattern.text.LanguageIdentifier"}, {"object" : "com\/peoplepattern\/text\/StringUtil$.html", "name" : "com.peoplepattern.text.StringUtil"}]};
--------------------------------------------------------------------------------
/src/jekyll/v0.2/api/index/index-a.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
24 |
--------------------------------------------------------------------------------
/src/jekyll/v0.2/api/index/index-b.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
18 |
bundleForLang
19 |
20 |
21 |
--------------------------------------------------------------------------------
/src/jekyll/v0.2/api/index/index-c.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
charBigrams
16 |
17 |
18 |
charNgrams
19 |
20 |
30 |
--------------------------------------------------------------------------------
/src/jekyll/v0.2/api/index/index-d.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
defaultFrequency
16 |
17 |
18 |
defaultMinTextSize
19 |
20 |
21 |
defaultThreshold
22 |
23 |
24 |
--------------------------------------------------------------------------------
/src/jekyll/v0.2/api/index/index-i.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
21 |
isContentTerm
22 |
23 |
33 |
--------------------------------------------------------------------------------
/src/jekyll/v0.2/api/index/index-l.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
LangBundle
16 |
17 |
18 |
LanguageIdentifier
19 |
20 |
27 |
--------------------------------------------------------------------------------
/src/jekyll/v0.2/api/index/index-m.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
21 |
--------------------------------------------------------------------------------
/src/jekyll/v0.2/api/index/index-n.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
18 |
--------------------------------------------------------------------------------
/src/jekyll/v0.2/api/index/index-p.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
peoplepattern
16 |
17 |
18 |
--------------------------------------------------------------------------------
/src/jekyll/v0.2/api/index/index-s.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
StringUtil
16 |
17 |
18 |
StringWithAnalysis
19 |
20 |
21 |
simplifiedUrl
22 |
23 |
24 |
simplifyUrl
25 |
26 |
33 |
--------------------------------------------------------------------------------
/src/jekyll/v0.2/api/index/index-t.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
termBigrams
16 |
17 |
18 |
termNgrams
19 |
20 |
21 |
termTrigrams
22 |
23 |
36 |
--------------------------------------------------------------------------------
/src/jekyll/v0.2/api/index/index-u.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
18 |
--------------------------------------------------------------------------------
/src/jekyll/v0.2/api/lib/arrow-down.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.2/api/lib/arrow-down.png
--------------------------------------------------------------------------------
/src/jekyll/v0.2/api/lib/arrow-right.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.2/api/lib/arrow-right.png
--------------------------------------------------------------------------------
/src/jekyll/v0.2/api/lib/class.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.2/api/lib/class.png
--------------------------------------------------------------------------------
/src/jekyll/v0.2/api/lib/class_big.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.2/api/lib/class_big.png
--------------------------------------------------------------------------------
/src/jekyll/v0.2/api/lib/class_diagram.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.2/api/lib/class_diagram.png
--------------------------------------------------------------------------------
/src/jekyll/v0.2/api/lib/class_to_object_big.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.2/api/lib/class_to_object_big.png
--------------------------------------------------------------------------------
/src/jekyll/v0.2/api/lib/constructorsbg.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.2/api/lib/constructorsbg.gif
--------------------------------------------------------------------------------
/src/jekyll/v0.2/api/lib/conversionbg.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.2/api/lib/conversionbg.gif
--------------------------------------------------------------------------------
/src/jekyll/v0.2/api/lib/defbg-blue.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.2/api/lib/defbg-blue.gif
--------------------------------------------------------------------------------
/src/jekyll/v0.2/api/lib/defbg-green.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.2/api/lib/defbg-green.gif
--------------------------------------------------------------------------------
/src/jekyll/v0.2/api/lib/diagrams.css:
--------------------------------------------------------------------------------
1 | .diagram-container
2 | {
3 | display: none;
4 | }
5 |
6 | .diagram
7 | {
8 | overflow: hidden;
9 | padding-top:15px;
10 | }
11 |
12 | .diagram svg
13 | {
14 | display: block;
15 | position: absolute;
16 | visibility: hidden;
17 | margin: auto;
18 | }
19 |
20 | .diagram-help
21 | {
22 | float:right;
23 | display:none;
24 | }
25 |
26 | .magnifying
27 | {
28 | cursor: -webkit-zoom-in ! important;
29 | cursor: -moz-zoom-in ! important;
30 | cursor: pointer;
31 | }
32 |
33 | #close-link
34 | {
35 | position: absolute;
36 | z-index: 100;
37 | font-family: Arial, sans-serif;
38 | font-size: 10pt;
39 | text-decoration: underline;
40 | color: #315479;
41 | }
42 |
43 | #close:hover
44 | {
45 | text-decoration: none;
46 | }
47 |
48 | svg a
49 | {
50 | cursor:pointer;
51 | }
52 |
53 | svg text
54 | {
55 | font-size: 10px;
56 | }
57 |
58 | /* try to move the node text 1px in order to be vertically
59 | centered (does not work in all browsers) */
60 | svg .node text
61 | {
62 | transform: translate(0px,1px);
63 | -ms-transform: translate(0px,1px);
64 | -webkit-transform: translate(0px,1px);
65 | -o-transform: translate(0px,1px);
66 | -moz-transform: translate(0px,1px);
67 | }
68 |
69 | /* hover effect for edges */
70 |
71 | svg .edge.over text,
72 | svg .edge.implicit-incoming.over polygon,
73 | svg .edge.implicit-outgoing.over polygon
74 | {
75 | fill: #202020;
76 | }
77 |
78 | svg .edge.over path,
79 | svg .edge.over polygon
80 | {
81 | stroke: #202020;
82 | }
83 |
84 | /* hover effect for nodes in class diagrams */
85 |
86 | svg.class-diagram .node
87 | {
88 | opacity: 0.75;
89 | }
90 |
91 | svg.class-diagram .node.this
92 | {
93 | opacity: 1.0;
94 | }
95 |
96 | svg.class-diagram .node.over
97 | {
98 | opacity: 1.0;
99 | }
100 |
101 | svg .node.over polygon
102 | {
103 | stroke: #202020;
104 | }
105 |
106 | /* hover effect for nodes in package diagrams */
107 |
108 | svg.package-diagram .node.class.over polygon,
109 | svg.class-diagram .node.this.class.over polygon
110 | {
111 | fill: #098552;
112 | fill: #04663e;
113 | }
114 |
115 | svg.package-diagram .node.trait.over polygon,
116 | svg.class-diagram .node.this.trait.over polygon
117 | {
118 | fill: #3c7b9b;
119 | fill: #235d7b;
120 | }
121 |
122 | svg.package-diagram .node.type.over polygon,
123 | svg.class-diagram .node.this.type.over polygon
124 | {
125 | fill: #098552;
126 | fill: #04663e;
127 | }
128 |
129 |
130 | svg.package-diagram .node.object.over polygon
131 | {
132 | fill: #183377;
133 | }
134 |
135 | svg.package-diagram .node.outside.over polygon
136 | {
137 | fill: #d4d4d4;
138 | }
139 |
140 | svg.package-diagram .node.default.over polygon
141 | {
142 | fill: #d4d4d4;
143 | }
144 |
--------------------------------------------------------------------------------
/src/jekyll/v0.2/api/lib/filter_box_left.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.2/api/lib/filter_box_left.png
--------------------------------------------------------------------------------
/src/jekyll/v0.2/api/lib/filter_box_left2.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.2/api/lib/filter_box_left2.gif
--------------------------------------------------------------------------------
/src/jekyll/v0.2/api/lib/filter_box_right.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.2/api/lib/filter_box_right.png
--------------------------------------------------------------------------------
/src/jekyll/v0.2/api/lib/filterbg.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.2/api/lib/filterbg.gif
--------------------------------------------------------------------------------
/src/jekyll/v0.2/api/lib/filterboxbarbg.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.2/api/lib/filterboxbarbg.gif
--------------------------------------------------------------------------------
/src/jekyll/v0.2/api/lib/filterboxbarbg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.2/api/lib/filterboxbarbg.png
--------------------------------------------------------------------------------
/src/jekyll/v0.2/api/lib/filterboxbg.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.2/api/lib/filterboxbg.gif
--------------------------------------------------------------------------------
/src/jekyll/v0.2/api/lib/fullcommenttopbg.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.2/api/lib/fullcommenttopbg.gif
--------------------------------------------------------------------------------
/src/jekyll/v0.2/api/lib/modernizr.custom.js:
--------------------------------------------------------------------------------
1 | /* Modernizr 2.5.3 (Custom Build) | MIT & BSD
2 | * Build: http://www.modernizr.com/download/#-inlinesvg
3 | */
4 | ;window.Modernizr=function(a,b,c){function u(a){i.cssText=a}function v(a,b){return u(prefixes.join(a+";")+(b||""))}function w(a,b){return typeof a===b}function x(a,b){return!!~(""+a).indexOf(b)}function y(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:w(f,"function")?f.bind(d||b):f}return!1}var d="2.5.3",e={},f=b.documentElement,g="modernizr",h=b.createElement(g),i=h.style,j,k={}.toString,l={svg:"http://www.w3.org/2000/svg"},m={},n={},o={},p=[],q=p.slice,r,s={}.hasOwnProperty,t;!w(s,"undefined")&&!w(s.call,"undefined")?t=function(a,b){return s.call(a,b)}:t=function(a,b){return b in a&&w(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;var d=q.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(q.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(q.call(arguments)))};return e}),m.inlinesvg=function(){var a=b.createElement("div");return a.innerHTML=" ",(a.firstChild&&a.firstChild.namespaceURI)==l.svg};for(var z in m)t(m,z)&&(r=z.toLowerCase(),e[r]=m[z](),p.push((e[r]?"":"no-")+r));return u(""),h=j=null,e._version=d,e}(this,this.document);
--------------------------------------------------------------------------------
/src/jekyll/v0.2/api/lib/navigation-li-a.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.2/api/lib/navigation-li-a.png
--------------------------------------------------------------------------------
/src/jekyll/v0.2/api/lib/navigation-li.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.2/api/lib/navigation-li.png
--------------------------------------------------------------------------------
/src/jekyll/v0.2/api/lib/object.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.2/api/lib/object.png
--------------------------------------------------------------------------------
/src/jekyll/v0.2/api/lib/object_big.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.2/api/lib/object_big.png
--------------------------------------------------------------------------------
/src/jekyll/v0.2/api/lib/object_diagram.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.2/api/lib/object_diagram.png
--------------------------------------------------------------------------------
/src/jekyll/v0.2/api/lib/object_to_class_big.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.2/api/lib/object_to_class_big.png
--------------------------------------------------------------------------------
/src/jekyll/v0.2/api/lib/object_to_trait_big.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.2/api/lib/object_to_trait_big.png
--------------------------------------------------------------------------------
/src/jekyll/v0.2/api/lib/object_to_type_big.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.2/api/lib/object_to_type_big.png
--------------------------------------------------------------------------------
/src/jekyll/v0.2/api/lib/ownderbg2.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.2/api/lib/ownderbg2.gif
--------------------------------------------------------------------------------
/src/jekyll/v0.2/api/lib/ownerbg.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.2/api/lib/ownerbg.gif
--------------------------------------------------------------------------------
/src/jekyll/v0.2/api/lib/ownerbg2.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.2/api/lib/ownerbg2.gif
--------------------------------------------------------------------------------
/src/jekyll/v0.2/api/lib/package.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.2/api/lib/package.png
--------------------------------------------------------------------------------
/src/jekyll/v0.2/api/lib/package_big.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.2/api/lib/package_big.png
--------------------------------------------------------------------------------
/src/jekyll/v0.2/api/lib/packagesbg.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.2/api/lib/packagesbg.gif
--------------------------------------------------------------------------------
/src/jekyll/v0.2/api/lib/ref-index.css:
--------------------------------------------------------------------------------
1 | body {
2 | font-size: 10pt;
3 | font-family: Arial, sans-serif;
4 | }
5 |
6 | a {
7 | color:#315479;
8 | }
9 |
10 | .letters {
11 | width:100%;
12 | text-align:center;
13 | margin:0.6em;
14 | padding:0.1em;
15 | border-bottom:1px solid gray;
16 | }
17 |
18 | .entry {
19 | border-bottom: 1px solid lightgray;
20 | padding: 5px 0 8px;
21 | }
22 |
23 | .name {
24 | /* background-color:#E5E5E5; */
25 | }
26 |
27 | .occurrences {
28 | margin-left: 1em;
29 | margin-top: 5px;
30 | }
--------------------------------------------------------------------------------
/src/jekyll/v0.2/api/lib/remove.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.2/api/lib/remove.png
--------------------------------------------------------------------------------
/src/jekyll/v0.2/api/lib/scheduler.js:
--------------------------------------------------------------------------------
1 | // © 2010 EPFL/LAMP
2 | // code by Gilles Dubochet
3 |
4 | function Scheduler() {
5 | var scheduler = this;
6 | var resolution = 0;
7 | this.timeout = undefined;
8 | this.queues = new Array(0); // an array of work pacakges indexed by index in the labels table.
9 | this.labels = new Array(0); // an indexed array of labels indexed by priority. This should be short.
10 | this.label = function(name, priority) {
11 | this.name = name;
12 | this.priority = priority;
13 | }
14 | this.work = function(fn, self, args) {
15 | this.fn = fn;
16 | this.self = self;
17 | this.args = args;
18 | }
19 | this.addLabel = function(name, priority) {
20 | var idx = 0;
21 | while (idx < scheduler.queues.length && scheduler.labels[idx].priority <= priority) { idx = idx + 1; }
22 | scheduler.labels.splice(idx, 0, new scheduler.label(name, priority));
23 | scheduler.queues.splice(idx, 0, new Array(0));
24 | }
25 | this.clearLabel = function(name) {
26 | var idx = 0;
27 | while (idx < scheduler.queues.length && scheduler.labels[idx].name != name) { idx = idx + 1; }
28 | if (idx < scheduler.queues.length && scheduler.labels[i].name == name) {
29 | scheduler.labels.splice(idx, 1);
30 | scheduler.queues.splice(idx, 1);
31 | }
32 | }
33 | this.nextWork = function() {
34 | var fn = undefined;
35 | var idx = 0;
36 | while (idx < scheduler.queues.length && scheduler.queues[idx].length == 0) { idx = idx + 1; }
37 | if (idx < scheduler.queues.length && scheduler.queues[idx].length > 0) {
38 | var fn = scheduler.queues[idx].shift();
39 | }
40 | return fn;
41 | }
42 | this.add = function(labelName, fn, self, args) {
43 | var doWork = function() {
44 | scheduler.timeout = setTimeout(function() {
45 | var work = scheduler.nextWork();
46 | if (work != undefined) {
47 | if (work.args == undefined) { work.args = new Array(0); }
48 | work.fn.apply(work.self, work.args);
49 | doWork();
50 | }
51 | else {
52 | scheduler.timeout = undefined;
53 | }
54 | }, resolution);
55 | }
56 | var idx = 0;
57 | while (idx < scheduler.labels.length && scheduler.labels[idx].name != labelName) { idx = idx + 1; }
58 | if (idx < scheduler.queues.length && scheduler.labels[idx].name == labelName) {
59 | scheduler.queues[idx].push(new scheduler.work(fn, self, args));
60 | if (scheduler.timeout == undefined) doWork();
61 | }
62 | else throw("queue for add is non existant");
63 | }
64 | this.clear = function(labelName) {
65 | var idx = 0;
66 | while (idx < scheduler.labels.length && scheduler.labels[idx].name != labelName) { idx = idx + 1; }
67 | if (idx < scheduler.queues.length && scheduler.labels[idx].name == labelName) {
68 | scheduler.queues[idx] = new Array();
69 | }
70 | }
71 | };
72 |
--------------------------------------------------------------------------------
/src/jekyll/v0.2/api/lib/selected-implicits.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.2/api/lib/selected-implicits.png
--------------------------------------------------------------------------------
/src/jekyll/v0.2/api/lib/selected-right-implicits.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.2/api/lib/selected-right-implicits.png
--------------------------------------------------------------------------------
/src/jekyll/v0.2/api/lib/selected-right.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.2/api/lib/selected-right.png
--------------------------------------------------------------------------------
/src/jekyll/v0.2/api/lib/selected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.2/api/lib/selected.png
--------------------------------------------------------------------------------
/src/jekyll/v0.2/api/lib/selected2-right.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.2/api/lib/selected2-right.png
--------------------------------------------------------------------------------
/src/jekyll/v0.2/api/lib/selected2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.2/api/lib/selected2.png
--------------------------------------------------------------------------------
/src/jekyll/v0.2/api/lib/signaturebg.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.2/api/lib/signaturebg.gif
--------------------------------------------------------------------------------
/src/jekyll/v0.2/api/lib/signaturebg2.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.2/api/lib/signaturebg2.gif
--------------------------------------------------------------------------------
/src/jekyll/v0.2/api/lib/tools.tooltip.js:
--------------------------------------------------------------------------------
1 | /*
2 | * tools.tooltip 1.1.3 - Tooltips done right.
3 | *
4 | * Copyright (c) 2009 Tero Piirainen
5 | * http://flowplayer.org/tools/tooltip.html
6 | *
7 | * Dual licensed under MIT and GPL 2+ licenses
8 | * http://www.opensource.org/licenses
9 | *
10 | * Launch : November 2008
11 | * Date: ${date}
12 | * Revision: ${revision}
13 | */
14 | (function(c){var d=[];c.tools=c.tools||{};c.tools.tooltip={version:"1.1.3",conf:{effect:"toggle",fadeOutSpeed:"fast",tip:null,predelay:0,delay:30,opacity:1,lazy:undefined,position:["top","center"],offset:[0,0],cancelDefault:true,relative:false,oneInstance:true,events:{def:"mouseover,mouseout",input:"focus,blur",widget:"focus mouseover,blur mouseout",tooltip:"mouseover,mouseout"},api:false},addEffect:function(e,g,f){b[e]=[g,f]}};var b={toggle:[function(e){var f=this.getConf(),g=this.getTip(),h=f.opacity;if(h<1){g.css({opacity:h})}g.show();e.call()},function(e){this.getTip().hide();e.call()}],fade:[function(e){this.getTip().fadeIn(this.getConf().fadeInSpeed,e)},function(e){this.getTip().fadeOut(this.getConf().fadeOutSpeed,e)}]};function a(f,g){var p=this,k=c(this);f.data("tooltip",p);var l=f.next();if(g.tip){l=c(g.tip);if(l.length>1){l=f.nextAll(g.tip).eq(0);if(!l.length){l=f.parent().nextAll(g.tip).eq(0)}}}function o(u){var t=g.relative?f.position().top:f.offset().top,s=g.relative?f.position().left:f.offset().left,v=g.position[0];t-=l.outerHeight()-g.offset[0];s+=f.outerWidth()+g.offset[1];var q=l.outerHeight()+f.outerHeight();if(v=="center"){t+=q/2}if(v=="bottom"){t+=q}v=g.position[1];var r=l.outerWidth()+f.outerWidth();if(v=="center"){s-=r/2}if(v=="left"){s-=r}return{top:t,left:s}}var i=f.is(":input"),e=i&&f.is(":checkbox, :radio, select, :button"),h=f.attr("type"),n=g.events[h]||g.events[i?(e?"widget":"input"):"def"];n=n.split(/,\s*/);if(n.length!=2){throw"Tooltip: bad events configuration for "+h}f.bind(n[0],function(r){if(g.oneInstance){c.each(d,function(){this.hide()})}var q=l.data("trigger");if(q&&q[0]!=this){l.hide().stop(true,true)}r.target=this;p.show(r);n=g.events.tooltip.split(/,\s*/);l.bind(n[0],function(){p.show(r)});if(n[1]){l.bind(n[1],function(){p.hide(r)})}});f.bind(n[1],function(q){p.hide(q)});if(!c.browser.msie&&!i&&!g.predelay){f.mousemove(function(){if(!p.isShown()){f.triggerHandler("mouseover")}})}if(g.opacity<1){l.css("opacity",g.opacity)}var m=0,j=f.attr("title");if(j&&g.cancelDefault){f.removeAttr("title");f.data("title",j)}c.extend(p,{show:function(r){if(r){f=c(r.target)}clearTimeout(l.data("timer"));if(l.is(":animated")||l.is(":visible")){return p}function q(){l.data("trigger",f);var t=o(r);if(g.tip&&j){l.html(f.data("title"))}r=r||c.Event();r.type="onBeforeShow";k.trigger(r,[t]);if(r.isDefaultPrevented()){return p}t=o(r);l.css({position:"absolute",top:t.top,left:t.left});var s=b[g.effect];if(!s){throw'Nonexistent effect "'+g.effect+'"'}s[0].call(p,function(){r.type="onShow";k.trigger(r)})}if(g.predelay){clearTimeout(m);m=setTimeout(q,g.predelay)}else{q()}return p},hide:function(r){clearTimeout(l.data("timer"));clearTimeout(m);if(!l.is(":visible")){return}function q(){r=r||c.Event();r.type="onBeforeHide";k.trigger(r);if(r.isDefaultPrevented()){return}b[g.effect][1].call(p,function(){r.type="onHide";k.trigger(r)})}if(g.delay&&r){l.data("timer",setTimeout(q,g.delay))}else{q()}return p},isShown:function(){return l.is(":visible, :animated")},getConf:function(){return g},getTip:function(){return l},getTrigger:function(){return f},bind:function(q,r){k.bind(q,r);return p},onHide:function(q){return this.bind("onHide",q)},onBeforeShow:function(q){return this.bind("onBeforeShow",q)},onShow:function(q){return this.bind("onShow",q)},onBeforeHide:function(q){return this.bind("onBeforeHide",q)},unbind:function(q){k.unbind(q);return p}});c.each(g,function(q,r){if(c.isFunction(r)){p.bind(q,r)}})}c.prototype.tooltip=function(e){var f=this.eq(typeof e=="number"?e:0).data("tooltip");if(f){return f}var g=c.extend(true,{},c.tools.tooltip.conf);if(c.isFunction(e)){e={onBeforeShow:e}}else{if(typeof e=="string"){e={tip:e}}}e=c.extend(true,g,e);if(typeof e.position=="string"){e.position=e.position.split(/,?\s/)}if(e.lazy!==false&&(e.lazy===true||this.length>20)){this.one("mouseover",function(h){f=new a(c(this),e);f.show(h);d.push(f)})}else{this.each(function(){f=new a(c(this),e);d.push(f)})}return e.api?f:this}})(jQuery);
--------------------------------------------------------------------------------
/src/jekyll/v0.2/api/lib/trait.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.2/api/lib/trait.png
--------------------------------------------------------------------------------
/src/jekyll/v0.2/api/lib/trait_big.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.2/api/lib/trait_big.png
--------------------------------------------------------------------------------
/src/jekyll/v0.2/api/lib/trait_diagram.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.2/api/lib/trait_diagram.png
--------------------------------------------------------------------------------
/src/jekyll/v0.2/api/lib/trait_to_object_big.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.2/api/lib/trait_to_object_big.png
--------------------------------------------------------------------------------
/src/jekyll/v0.2/api/lib/type.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.2/api/lib/type.png
--------------------------------------------------------------------------------
/src/jekyll/v0.2/api/lib/type_big.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.2/api/lib/type_big.png
--------------------------------------------------------------------------------
/src/jekyll/v0.2/api/lib/type_diagram.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.2/api/lib/type_diagram.png
--------------------------------------------------------------------------------
/src/jekyll/v0.2/api/lib/type_to_object_big.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.2/api/lib/type_to_object_big.png
--------------------------------------------------------------------------------
/src/jekyll/v0.2/api/lib/typebg.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.2/api/lib/typebg.gif
--------------------------------------------------------------------------------
/src/jekyll/v0.2/api/lib/unselected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.2/api/lib/unselected.png
--------------------------------------------------------------------------------
/src/jekyll/v0.2/api/lib/valuemembersbg.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.2/api/lib/valuemembersbg.gif
--------------------------------------------------------------------------------
/src/jekyll/v0.2/api/package.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | root - _root_
6 |
7 |
8 |
9 |
10 |
11 |
12 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
root package
30 |
31 |
32 |
33 |
34 |
35 | package
36 |
37 |
38 | root
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
Visibility
51 |
Public All
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
Value Members
65 |
66 |
67 |
68 |
69 |
70 |
71 | package
72 |
73 |
74 | com
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
Ungrouped
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
--------------------------------------------------------------------------------
/src/jekyll/v0.3/api/com/package.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | com - com
6 |
7 |
8 |
9 |
10 |
11 |
12 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
com
30 |
31 |
32 |
33 |
34 |
35 | package
36 |
37 |
38 | com
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
Visibility
51 |
Public All
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
Value Members
65 |
66 |
67 |
68 |
69 |
70 |
71 | package
72 |
73 |
74 | peoplepattern
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
Ungrouped
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
--------------------------------------------------------------------------------
/src/jekyll/v0.3/api/com/peoplepattern/package.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | peoplepattern - com.peoplepattern
6 |
7 |
8 |
9 |
10 |
11 |
12 |
23 |
24 |
25 |
26 |
27 |
28 |
com
29 |
peoplepattern
30 |
31 |
32 |
33 |
34 |
35 | package
36 |
37 |
38 | peoplepattern
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
Visibility
51 |
Public All
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
Value Members
65 |
66 |
67 |
68 |
69 |
70 |
71 | package
72 |
73 |
74 | text
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
Ungrouped
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
--------------------------------------------------------------------------------
/src/jekyll/v0.3/api/index.js:
--------------------------------------------------------------------------------
1 | Index.PACKAGES = {"com" : [], "com.peoplepattern" : [], "com.peoplepattern.text" : [{"object" : "com\/peoplepattern\/text\/Implicits$.html", "name" : "com.peoplepattern.text.Implicits"}, {"object" : "com\/peoplepattern\/text\/JaLangBundle$.html", "name" : "com.peoplepattern.text.JaLangBundle"}, {"object" : "com\/peoplepattern\/text\/LangBundle$.html", "trait" : "com\/peoplepattern\/text\/LangBundle.html", "name" : "com.peoplepattern.text.LangBundle"}, {"object" : "com\/peoplepattern\/text\/LanguageIdentifier$.html", "trait" : "com\/peoplepattern\/text\/LanguageIdentifier.html", "name" : "com.peoplepattern.text.LanguageIdentifier"}, {"object" : "com\/peoplepattern\/text\/StringUtil$.html", "name" : "com.peoplepattern.text.StringUtil"}]};
--------------------------------------------------------------------------------
/src/jekyll/v0.3/api/index/index-a.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
24 |
--------------------------------------------------------------------------------
/src/jekyll/v0.3/api/index/index-b.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
18 |
bundleForLang
19 |
20 |
21 |
--------------------------------------------------------------------------------
/src/jekyll/v0.3/api/index/index-c.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
charBigrams
16 |
17 |
18 |
charNgrams
19 |
20 |
30 |
--------------------------------------------------------------------------------
/src/jekyll/v0.3/api/index/index-d.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
defaultFrequency
16 |
17 |
18 |
defaultMinTextSize
19 |
20 |
21 |
defaultThreshold
22 |
23 |
24 |
--------------------------------------------------------------------------------
/src/jekyll/v0.3/api/index/index-i.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
21 |
isContentTerm
22 |
23 |
33 |
--------------------------------------------------------------------------------
/src/jekyll/v0.3/api/index/index-j.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
JaLangBundle
16 |
17 |
21 |
--------------------------------------------------------------------------------
/src/jekyll/v0.3/api/index/index-l.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
LangBundle
16 |
17 |
18 |
LanguageIdentifier
19 |
20 |
27 |
--------------------------------------------------------------------------------
/src/jekyll/v0.3/api/index/index-m.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
21 |
--------------------------------------------------------------------------------
/src/jekyll/v0.3/api/index/index-n.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
18 |
--------------------------------------------------------------------------------
/src/jekyll/v0.3/api/index/index-p.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
peoplepattern
16 |
17 |
18 |
--------------------------------------------------------------------------------
/src/jekyll/v0.3/api/index/index-s.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
StringUtil
16 |
17 |
18 |
StringWithAnalysis
19 |
20 |
21 |
simplifiedUrl
22 |
23 |
24 |
simplifyUrl
25 |
26 |
33 |
--------------------------------------------------------------------------------
/src/jekyll/v0.3/api/index/index-t.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
termBigrams
16 |
17 |
18 |
termNgrams
19 |
20 |
21 |
termTrigrams
22 |
23 |
36 |
--------------------------------------------------------------------------------
/src/jekyll/v0.3/api/index/index-u.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
18 |
--------------------------------------------------------------------------------
/src/jekyll/v0.3/api/lib/arrow-down.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.3/api/lib/arrow-down.png
--------------------------------------------------------------------------------
/src/jekyll/v0.3/api/lib/arrow-right.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.3/api/lib/arrow-right.png
--------------------------------------------------------------------------------
/src/jekyll/v0.3/api/lib/class.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.3/api/lib/class.png
--------------------------------------------------------------------------------
/src/jekyll/v0.3/api/lib/class_big.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.3/api/lib/class_big.png
--------------------------------------------------------------------------------
/src/jekyll/v0.3/api/lib/class_diagram.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.3/api/lib/class_diagram.png
--------------------------------------------------------------------------------
/src/jekyll/v0.3/api/lib/class_to_object_big.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.3/api/lib/class_to_object_big.png
--------------------------------------------------------------------------------
/src/jekyll/v0.3/api/lib/constructorsbg.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.3/api/lib/constructorsbg.gif
--------------------------------------------------------------------------------
/src/jekyll/v0.3/api/lib/conversionbg.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.3/api/lib/conversionbg.gif
--------------------------------------------------------------------------------
/src/jekyll/v0.3/api/lib/defbg-blue.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.3/api/lib/defbg-blue.gif
--------------------------------------------------------------------------------
/src/jekyll/v0.3/api/lib/defbg-green.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.3/api/lib/defbg-green.gif
--------------------------------------------------------------------------------
/src/jekyll/v0.3/api/lib/diagrams.css:
--------------------------------------------------------------------------------
1 | .diagram-container
2 | {
3 | display: none;
4 | }
5 |
6 | .diagram
7 | {
8 | overflow: hidden;
9 | padding-top:15px;
10 | }
11 |
12 | .diagram svg
13 | {
14 | display: block;
15 | position: absolute;
16 | visibility: hidden;
17 | margin: auto;
18 | }
19 |
20 | .diagram-help
21 | {
22 | float:right;
23 | display:none;
24 | }
25 |
26 | .magnifying
27 | {
28 | cursor: -webkit-zoom-in ! important;
29 | cursor: -moz-zoom-in ! important;
30 | cursor: pointer;
31 | }
32 |
33 | #close-link
34 | {
35 | position: absolute;
36 | z-index: 100;
37 | font-family: Arial, sans-serif;
38 | font-size: 10pt;
39 | text-decoration: underline;
40 | color: #315479;
41 | }
42 |
43 | #close:hover
44 | {
45 | text-decoration: none;
46 | }
47 |
48 | svg a
49 | {
50 | cursor:pointer;
51 | }
52 |
53 | svg text
54 | {
55 | font-size: 10px;
56 | }
57 |
58 | /* try to move the node text 1px in order to be vertically
59 | centered (does not work in all browsers) */
60 | svg .node text
61 | {
62 | transform: translate(0px,1px);
63 | -ms-transform: translate(0px,1px);
64 | -webkit-transform: translate(0px,1px);
65 | -o-transform: translate(0px,1px);
66 | -moz-transform: translate(0px,1px);
67 | }
68 |
69 | /* hover effect for edges */
70 |
71 | svg .edge.over text,
72 | svg .edge.implicit-incoming.over polygon,
73 | svg .edge.implicit-outgoing.over polygon
74 | {
75 | fill: #202020;
76 | }
77 |
78 | svg .edge.over path,
79 | svg .edge.over polygon
80 | {
81 | stroke: #202020;
82 | }
83 |
84 | /* hover effect for nodes in class diagrams */
85 |
86 | svg.class-diagram .node
87 | {
88 | opacity: 0.75;
89 | }
90 |
91 | svg.class-diagram .node.this
92 | {
93 | opacity: 1.0;
94 | }
95 |
96 | svg.class-diagram .node.over
97 | {
98 | opacity: 1.0;
99 | }
100 |
101 | svg .node.over polygon
102 | {
103 | stroke: #202020;
104 | }
105 |
106 | /* hover effect for nodes in package diagrams */
107 |
108 | svg.package-diagram .node.class.over polygon,
109 | svg.class-diagram .node.this.class.over polygon
110 | {
111 | fill: #098552;
112 | fill: #04663e;
113 | }
114 |
115 | svg.package-diagram .node.trait.over polygon,
116 | svg.class-diagram .node.this.trait.over polygon
117 | {
118 | fill: #3c7b9b;
119 | fill: #235d7b;
120 | }
121 |
122 | svg.package-diagram .node.type.over polygon,
123 | svg.class-diagram .node.this.type.over polygon
124 | {
125 | fill: #098552;
126 | fill: #04663e;
127 | }
128 |
129 |
130 | svg.package-diagram .node.object.over polygon
131 | {
132 | fill: #183377;
133 | }
134 |
135 | svg.package-diagram .node.outside.over polygon
136 | {
137 | fill: #d4d4d4;
138 | }
139 |
140 | svg.package-diagram .node.default.over polygon
141 | {
142 | fill: #d4d4d4;
143 | }
144 |
--------------------------------------------------------------------------------
/src/jekyll/v0.3/api/lib/filter_box_left.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.3/api/lib/filter_box_left.png
--------------------------------------------------------------------------------
/src/jekyll/v0.3/api/lib/filter_box_left2.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.3/api/lib/filter_box_left2.gif
--------------------------------------------------------------------------------
/src/jekyll/v0.3/api/lib/filter_box_right.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.3/api/lib/filter_box_right.png
--------------------------------------------------------------------------------
/src/jekyll/v0.3/api/lib/filterbg.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.3/api/lib/filterbg.gif
--------------------------------------------------------------------------------
/src/jekyll/v0.3/api/lib/filterboxbarbg.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.3/api/lib/filterboxbarbg.gif
--------------------------------------------------------------------------------
/src/jekyll/v0.3/api/lib/filterboxbarbg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.3/api/lib/filterboxbarbg.png
--------------------------------------------------------------------------------
/src/jekyll/v0.3/api/lib/filterboxbg.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.3/api/lib/filterboxbg.gif
--------------------------------------------------------------------------------
/src/jekyll/v0.3/api/lib/fullcommenttopbg.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.3/api/lib/fullcommenttopbg.gif
--------------------------------------------------------------------------------
/src/jekyll/v0.3/api/lib/modernizr.custom.js:
--------------------------------------------------------------------------------
1 | /* Modernizr 2.5.3 (Custom Build) | MIT & BSD
2 | * Build: http://www.modernizr.com/download/#-inlinesvg
3 | */
4 | ;window.Modernizr=function(a,b,c){function u(a){i.cssText=a}function v(a,b){return u(prefixes.join(a+";")+(b||""))}function w(a,b){return typeof a===b}function x(a,b){return!!~(""+a).indexOf(b)}function y(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:w(f,"function")?f.bind(d||b):f}return!1}var d="2.5.3",e={},f=b.documentElement,g="modernizr",h=b.createElement(g),i=h.style,j,k={}.toString,l={svg:"http://www.w3.org/2000/svg"},m={},n={},o={},p=[],q=p.slice,r,s={}.hasOwnProperty,t;!w(s,"undefined")&&!w(s.call,"undefined")?t=function(a,b){return s.call(a,b)}:t=function(a,b){return b in a&&w(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;var d=q.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(q.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(q.call(arguments)))};return e}),m.inlinesvg=function(){var a=b.createElement("div");return a.innerHTML=" ",(a.firstChild&&a.firstChild.namespaceURI)==l.svg};for(var z in m)t(m,z)&&(r=z.toLowerCase(),e[r]=m[z](),p.push((e[r]?"":"no-")+r));return u(""),h=j=null,e._version=d,e}(this,this.document);
--------------------------------------------------------------------------------
/src/jekyll/v0.3/api/lib/navigation-li-a.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.3/api/lib/navigation-li-a.png
--------------------------------------------------------------------------------
/src/jekyll/v0.3/api/lib/navigation-li.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.3/api/lib/navigation-li.png
--------------------------------------------------------------------------------
/src/jekyll/v0.3/api/lib/object.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.3/api/lib/object.png
--------------------------------------------------------------------------------
/src/jekyll/v0.3/api/lib/object_big.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.3/api/lib/object_big.png
--------------------------------------------------------------------------------
/src/jekyll/v0.3/api/lib/object_diagram.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.3/api/lib/object_diagram.png
--------------------------------------------------------------------------------
/src/jekyll/v0.3/api/lib/object_to_class_big.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.3/api/lib/object_to_class_big.png
--------------------------------------------------------------------------------
/src/jekyll/v0.3/api/lib/object_to_trait_big.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.3/api/lib/object_to_trait_big.png
--------------------------------------------------------------------------------
/src/jekyll/v0.3/api/lib/object_to_type_big.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.3/api/lib/object_to_type_big.png
--------------------------------------------------------------------------------
/src/jekyll/v0.3/api/lib/ownderbg2.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.3/api/lib/ownderbg2.gif
--------------------------------------------------------------------------------
/src/jekyll/v0.3/api/lib/ownerbg.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.3/api/lib/ownerbg.gif
--------------------------------------------------------------------------------
/src/jekyll/v0.3/api/lib/ownerbg2.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.3/api/lib/ownerbg2.gif
--------------------------------------------------------------------------------
/src/jekyll/v0.3/api/lib/package.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.3/api/lib/package.png
--------------------------------------------------------------------------------
/src/jekyll/v0.3/api/lib/package_big.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.3/api/lib/package_big.png
--------------------------------------------------------------------------------
/src/jekyll/v0.3/api/lib/packagesbg.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.3/api/lib/packagesbg.gif
--------------------------------------------------------------------------------
/src/jekyll/v0.3/api/lib/ref-index.css:
--------------------------------------------------------------------------------
1 | body {
2 | font-size: 10pt;
3 | font-family: Arial, sans-serif;
4 | }
5 |
6 | a {
7 | color:#315479;
8 | }
9 |
10 | .letters {
11 | width:100%;
12 | text-align:center;
13 | margin:0.6em;
14 | padding:0.1em;
15 | border-bottom:1px solid gray;
16 | }
17 |
18 | .entry {
19 | border-bottom: 1px solid lightgray;
20 | padding: 5px 0 8px;
21 | }
22 |
23 | .name {
24 | /* background-color:#E5E5E5; */
25 | }
26 |
27 | .occurrences {
28 | margin-left: 1em;
29 | margin-top: 5px;
30 | }
--------------------------------------------------------------------------------
/src/jekyll/v0.3/api/lib/remove.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.3/api/lib/remove.png
--------------------------------------------------------------------------------
/src/jekyll/v0.3/api/lib/scheduler.js:
--------------------------------------------------------------------------------
1 | // © 2010 EPFL/LAMP
2 | // code by Gilles Dubochet
3 |
4 | function Scheduler() {
5 | var scheduler = this;
6 | var resolution = 0;
7 | this.timeout = undefined;
8 | this.queues = new Array(0); // an array of work pacakges indexed by index in the labels table.
9 | this.labels = new Array(0); // an indexed array of labels indexed by priority. This should be short.
10 | this.label = function(name, priority) {
11 | this.name = name;
12 | this.priority = priority;
13 | }
14 | this.work = function(fn, self, args) {
15 | this.fn = fn;
16 | this.self = self;
17 | this.args = args;
18 | }
19 | this.addLabel = function(name, priority) {
20 | var idx = 0;
21 | while (idx < scheduler.queues.length && scheduler.labels[idx].priority <= priority) { idx = idx + 1; }
22 | scheduler.labels.splice(idx, 0, new scheduler.label(name, priority));
23 | scheduler.queues.splice(idx, 0, new Array(0));
24 | }
25 | this.clearLabel = function(name) {
26 | var idx = 0;
27 | while (idx < scheduler.queues.length && scheduler.labels[idx].name != name) { idx = idx + 1; }
28 | if (idx < scheduler.queues.length && scheduler.labels[i].name == name) {
29 | scheduler.labels.splice(idx, 1);
30 | scheduler.queues.splice(idx, 1);
31 | }
32 | }
33 | this.nextWork = function() {
34 | var fn = undefined;
35 | var idx = 0;
36 | while (idx < scheduler.queues.length && scheduler.queues[idx].length == 0) { idx = idx + 1; }
37 | if (idx < scheduler.queues.length && scheduler.queues[idx].length > 0) {
38 | var fn = scheduler.queues[idx].shift();
39 | }
40 | return fn;
41 | }
42 | this.add = function(labelName, fn, self, args) {
43 | var doWork = function() {
44 | scheduler.timeout = setTimeout(function() {
45 | var work = scheduler.nextWork();
46 | if (work != undefined) {
47 | if (work.args == undefined) { work.args = new Array(0); }
48 | work.fn.apply(work.self, work.args);
49 | doWork();
50 | }
51 | else {
52 | scheduler.timeout = undefined;
53 | }
54 | }, resolution);
55 | }
56 | var idx = 0;
57 | while (idx < scheduler.labels.length && scheduler.labels[idx].name != labelName) { idx = idx + 1; }
58 | if (idx < scheduler.queues.length && scheduler.labels[idx].name == labelName) {
59 | scheduler.queues[idx].push(new scheduler.work(fn, self, args));
60 | if (scheduler.timeout == undefined) doWork();
61 | }
62 | else throw("queue for add is non existant");
63 | }
64 | this.clear = function(labelName) {
65 | var idx = 0;
66 | while (idx < scheduler.labels.length && scheduler.labels[idx].name != labelName) { idx = idx + 1; }
67 | if (idx < scheduler.queues.length && scheduler.labels[idx].name == labelName) {
68 | scheduler.queues[idx] = new Array();
69 | }
70 | }
71 | };
72 |
--------------------------------------------------------------------------------
/src/jekyll/v0.3/api/lib/selected-implicits.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.3/api/lib/selected-implicits.png
--------------------------------------------------------------------------------
/src/jekyll/v0.3/api/lib/selected-right-implicits.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.3/api/lib/selected-right-implicits.png
--------------------------------------------------------------------------------
/src/jekyll/v0.3/api/lib/selected-right.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.3/api/lib/selected-right.png
--------------------------------------------------------------------------------
/src/jekyll/v0.3/api/lib/selected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.3/api/lib/selected.png
--------------------------------------------------------------------------------
/src/jekyll/v0.3/api/lib/selected2-right.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.3/api/lib/selected2-right.png
--------------------------------------------------------------------------------
/src/jekyll/v0.3/api/lib/selected2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.3/api/lib/selected2.png
--------------------------------------------------------------------------------
/src/jekyll/v0.3/api/lib/signaturebg.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.3/api/lib/signaturebg.gif
--------------------------------------------------------------------------------
/src/jekyll/v0.3/api/lib/signaturebg2.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.3/api/lib/signaturebg2.gif
--------------------------------------------------------------------------------
/src/jekyll/v0.3/api/lib/tools.tooltip.js:
--------------------------------------------------------------------------------
1 | /*
2 | * tools.tooltip 1.1.3 - Tooltips done right.
3 | *
4 | * Copyright (c) 2009 Tero Piirainen
5 | * http://flowplayer.org/tools/tooltip.html
6 | *
7 | * Dual licensed under MIT and GPL 2+ licenses
8 | * http://www.opensource.org/licenses
9 | *
10 | * Launch : November 2008
11 | * Date: ${date}
12 | * Revision: ${revision}
13 | */
14 | (function(c){var d=[];c.tools=c.tools||{};c.tools.tooltip={version:"1.1.3",conf:{effect:"toggle",fadeOutSpeed:"fast",tip:null,predelay:0,delay:30,opacity:1,lazy:undefined,position:["top","center"],offset:[0,0],cancelDefault:true,relative:false,oneInstance:true,events:{def:"mouseover,mouseout",input:"focus,blur",widget:"focus mouseover,blur mouseout",tooltip:"mouseover,mouseout"},api:false},addEffect:function(e,g,f){b[e]=[g,f]}};var b={toggle:[function(e){var f=this.getConf(),g=this.getTip(),h=f.opacity;if(h<1){g.css({opacity:h})}g.show();e.call()},function(e){this.getTip().hide();e.call()}],fade:[function(e){this.getTip().fadeIn(this.getConf().fadeInSpeed,e)},function(e){this.getTip().fadeOut(this.getConf().fadeOutSpeed,e)}]};function a(f,g){var p=this,k=c(this);f.data("tooltip",p);var l=f.next();if(g.tip){l=c(g.tip);if(l.length>1){l=f.nextAll(g.tip).eq(0);if(!l.length){l=f.parent().nextAll(g.tip).eq(0)}}}function o(u){var t=g.relative?f.position().top:f.offset().top,s=g.relative?f.position().left:f.offset().left,v=g.position[0];t-=l.outerHeight()-g.offset[0];s+=f.outerWidth()+g.offset[1];var q=l.outerHeight()+f.outerHeight();if(v=="center"){t+=q/2}if(v=="bottom"){t+=q}v=g.position[1];var r=l.outerWidth()+f.outerWidth();if(v=="center"){s-=r/2}if(v=="left"){s-=r}return{top:t,left:s}}var i=f.is(":input"),e=i&&f.is(":checkbox, :radio, select, :button"),h=f.attr("type"),n=g.events[h]||g.events[i?(e?"widget":"input"):"def"];n=n.split(/,\s*/);if(n.length!=2){throw"Tooltip: bad events configuration for "+h}f.bind(n[0],function(r){if(g.oneInstance){c.each(d,function(){this.hide()})}var q=l.data("trigger");if(q&&q[0]!=this){l.hide().stop(true,true)}r.target=this;p.show(r);n=g.events.tooltip.split(/,\s*/);l.bind(n[0],function(){p.show(r)});if(n[1]){l.bind(n[1],function(){p.hide(r)})}});f.bind(n[1],function(q){p.hide(q)});if(!c.browser.msie&&!i&&!g.predelay){f.mousemove(function(){if(!p.isShown()){f.triggerHandler("mouseover")}})}if(g.opacity<1){l.css("opacity",g.opacity)}var m=0,j=f.attr("title");if(j&&g.cancelDefault){f.removeAttr("title");f.data("title",j)}c.extend(p,{show:function(r){if(r){f=c(r.target)}clearTimeout(l.data("timer"));if(l.is(":animated")||l.is(":visible")){return p}function q(){l.data("trigger",f);var t=o(r);if(g.tip&&j){l.html(f.data("title"))}r=r||c.Event();r.type="onBeforeShow";k.trigger(r,[t]);if(r.isDefaultPrevented()){return p}t=o(r);l.css({position:"absolute",top:t.top,left:t.left});var s=b[g.effect];if(!s){throw'Nonexistent effect "'+g.effect+'"'}s[0].call(p,function(){r.type="onShow";k.trigger(r)})}if(g.predelay){clearTimeout(m);m=setTimeout(q,g.predelay)}else{q()}return p},hide:function(r){clearTimeout(l.data("timer"));clearTimeout(m);if(!l.is(":visible")){return}function q(){r=r||c.Event();r.type="onBeforeHide";k.trigger(r);if(r.isDefaultPrevented()){return}b[g.effect][1].call(p,function(){r.type="onHide";k.trigger(r)})}if(g.delay&&r){l.data("timer",setTimeout(q,g.delay))}else{q()}return p},isShown:function(){return l.is(":visible, :animated")},getConf:function(){return g},getTip:function(){return l},getTrigger:function(){return f},bind:function(q,r){k.bind(q,r);return p},onHide:function(q){return this.bind("onHide",q)},onBeforeShow:function(q){return this.bind("onBeforeShow",q)},onShow:function(q){return this.bind("onShow",q)},onBeforeHide:function(q){return this.bind("onBeforeHide",q)},unbind:function(q){k.unbind(q);return p}});c.each(g,function(q,r){if(c.isFunction(r)){p.bind(q,r)}})}c.prototype.tooltip=function(e){var f=this.eq(typeof e=="number"?e:0).data("tooltip");if(f){return f}var g=c.extend(true,{},c.tools.tooltip.conf);if(c.isFunction(e)){e={onBeforeShow:e}}else{if(typeof e=="string"){e={tip:e}}}e=c.extend(true,g,e);if(typeof e.position=="string"){e.position=e.position.split(/,?\s/)}if(e.lazy!==false&&(e.lazy===true||this.length>20)){this.one("mouseover",function(h){f=new a(c(this),e);f.show(h);d.push(f)})}else{this.each(function(){f=new a(c(this),e);d.push(f)})}return e.api?f:this}})(jQuery);
--------------------------------------------------------------------------------
/src/jekyll/v0.3/api/lib/trait.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.3/api/lib/trait.png
--------------------------------------------------------------------------------
/src/jekyll/v0.3/api/lib/trait_big.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.3/api/lib/trait_big.png
--------------------------------------------------------------------------------
/src/jekyll/v0.3/api/lib/trait_diagram.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.3/api/lib/trait_diagram.png
--------------------------------------------------------------------------------
/src/jekyll/v0.3/api/lib/trait_to_object_big.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.3/api/lib/trait_to_object_big.png
--------------------------------------------------------------------------------
/src/jekyll/v0.3/api/lib/type.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.3/api/lib/type.png
--------------------------------------------------------------------------------
/src/jekyll/v0.3/api/lib/type_big.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.3/api/lib/type_big.png
--------------------------------------------------------------------------------
/src/jekyll/v0.3/api/lib/type_diagram.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.3/api/lib/type_diagram.png
--------------------------------------------------------------------------------
/src/jekyll/v0.3/api/lib/type_to_object_big.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.3/api/lib/type_to_object_big.png
--------------------------------------------------------------------------------
/src/jekyll/v0.3/api/lib/typebg.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.3/api/lib/typebg.gif
--------------------------------------------------------------------------------
/src/jekyll/v0.3/api/lib/unselected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.3/api/lib/unselected.png
--------------------------------------------------------------------------------
/src/jekyll/v0.3/api/lib/valuemembersbg.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/peoplepattern/lib-text/486ba4ca46be374f3b6ec3d423c2132d9ae8d2b2/src/jekyll/v0.3/api/lib/valuemembersbg.gif
--------------------------------------------------------------------------------
/src/jekyll/v0.3/api/package.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | root - _root_
6 |
7 |
8 |
9 |
10 |
11 |
12 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
root package
30 |
31 |
32 |
33 |
34 |
35 | package
36 |
37 |
38 | root
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
Visibility
51 |
Public All
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
Value Members
65 |
66 |
67 |
68 |
69 |
70 |
71 | package
72 |
73 |
74 | com
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
Ungrouped
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
--------------------------------------------------------------------------------
/src/main/resources/ar.conf:
--------------------------------------------------------------------------------
1 | lang.ar.stopwords = [
2 | ب
3 | ا
4 | أ
5 | ،
6 | عشر
7 | عدد
8 | عدة
9 | عشرة
10 | عدم
11 | عام
12 | عاما
13 | عن
14 | عند
15 | عندما
16 | على
17 | عليه
18 | عليها
19 | زيارة
20 | سنة
21 | سنوات
22 | تم
23 | ضد
24 | بعد
25 | بعض
26 | اعادة
27 | اعلنت
28 | بسبب
29 | حتى
30 | اذا
31 | احد
32 | اثر
33 | برس
34 | باسم
35 | غدا
36 | شخصا
37 | صباح
38 | اطار
39 | اربعة
40 | اخرى
41 | بان
42 | اجل
43 | غير
44 | بشكل
45 | حاليا
46 | بن
47 | به
48 | ثم
49 | اف
50 | ان
51 | او
52 | اي
53 | بها
54 | صفر
55 | حيث
56 | اكد
57 | الا
58 | اما
59 | امس
60 | السابق
61 | التى
62 | التي
63 | اكثر
64 | ايار
65 | ايضا
66 | ثلاثة
67 | الذاتي
68 | الاخيرة
69 | الثاني
70 | الثانية
71 | الذى
72 | الذي
73 | الان
74 | امام
75 | ايام
76 | خلال
77 | حوالى
78 | الذين
79 | الاول
80 | الاولى
81 | بين
82 | ذلك
83 | دون
84 | حول
85 | حين
86 | الف
87 | الى
88 | انه
89 | اول
90 | ضمن
91 | انها
92 | جميع
93 | الماضي
94 | الوقت
95 | المقبل
96 | اليوم
97 | ـ
98 | ف
99 | و
100 | و6
101 | قد
102 | لا
103 | ما
104 | مع
105 | مساء
106 | هذا
107 | واحد
108 | واضاف
109 | واضافت
110 | فان
111 | قبل
112 | قال
113 | كان
114 | لدى
115 | نحو
116 | هذه
117 | وان
118 | واكد
119 | كانت
120 | واوضح
121 | مايو
122 | فى
123 | في
124 | كل
125 | لم
126 | لن
127 | له
128 | من
129 | هو
130 | هي
131 | قوة
132 | كما
133 | لها
134 | منذ
135 | وقد
136 | ولا
137 | نفسه
138 | لقاء
139 | مقابل
140 | هناك
141 | وقال
142 | وكان
143 | نهاية
144 | وقالت
145 | وكانت
146 | للامم
147 | فيه
148 | كلم
149 | لكن
150 | وفي
151 | وقف
152 | ولم
153 | ومن
154 | وهو
155 | وهي
156 | يوم
157 | فيها
158 | منها
159 | مليار
160 | لوكالة
161 | يكون
162 | يمكن
163 | مليون
164 | ]
165 |
--------------------------------------------------------------------------------
/src/main/resources/in.conf:
--------------------------------------------------------------------------------
1 | lang.in.stopwords = [
2 | yang
3 | di
4 | dan
5 | itu
6 | dengan
7 | untuk
8 | tidak
9 | ini
10 | dari
11 | dalam
12 | akan
13 | pada
14 | juga
15 | saya
16 | ke
17 | karena
18 | tersebut
19 | bisa
20 | ada
21 | mereka
22 | lebih
23 | kata
24 | tahun
25 | sudah
26 | atau
27 | saat
28 | oleh
29 | menjadi
30 | orang
31 | ia
32 | telah
33 | adalah
34 | seperti
35 | sebagai
36 | bahwa
37 | dapat
38 | para
39 | harus
40 | namun
41 | kita
42 | dua
43 | satu
44 | masih
45 | hari
46 | hanya
47 | mengatakan
48 | kepada
49 | kami
50 | setelah
51 | melakukan
52 | lalu
53 | belum
54 | lain
55 | dia
56 | kalau
57 | terjadi
58 | banyak
59 | menurut
60 | anda
61 | hingga
62 | tak
63 | baru
64 | beberapa
65 | ketika
66 | saja
67 | jalan
68 | sekitar
69 | secara
70 | dilakukan
71 | sementara
72 | tapi
73 | sangat
74 | hal
75 | sehingga
76 | seorang
77 | bagi
78 | besar
79 | lagi
80 | selama
81 | antara
82 | waktu
83 | sebuah
84 | jika
85 | sampai
86 | jadi
87 | terhadap
88 | tiga
89 | serta
90 | pun
91 | salah
92 | merupakan
93 | atas
94 | sejak
95 | membuat
96 | baik
97 | memiliki
98 | kembali
99 | selain
100 | tetapi
101 | pertama
102 | kedua
103 | memang
104 | pernah
105 | apa
106 | mulai
107 | sama
108 | tentang
109 | bukan
110 | agar
111 | semua
112 | sedang
113 | kali
114 | kemudian
115 | hasil
116 | sejumlah
117 | juta
118 | persen
119 | sendiri
120 | katanya
121 | demikian
122 | masalah
123 | mungkin
124 | umum
125 | setiap
126 | bulan
127 | bagian
128 | bila
129 | lainnya
130 | terus
131 | luar
132 | cukup
133 | termasuk
134 | sebelumnya
135 | bahkan
136 | wib
137 | tempat
138 | perlu
139 | menggunakan
140 | memberikan
141 | rabu
142 | sedangkan
143 | kamis
144 | langsung
145 | apakah
146 | pihak
147 | melalui
148 | diri
149 | mencapai
150 | minggu
151 | aku
152 | berada
153 | tinggi
154 | ingin
155 | sebelum
156 | tengah
157 | kini
158 | the
159 | tahu
160 | bersama
161 | depan
162 | selasa
163 | begitu
164 | merasa
165 | berbagai
166 | mengenai
167 | maka
168 | jumlah
169 | masuk
170 | katanya
171 | mengalami
172 | sering
173 | ujar
174 | kondisi
175 | akibat
176 | hubungan
177 | empat
178 | paling
179 | mendapatkan
180 | selalu
181 | lima
182 | meminta
183 | melihat
184 | sekarang
185 | mengaku
186 | mau
187 | kerja
188 | acara
189 | menyatakan
190 | masa
191 | proses
192 | tanpa
193 | selatan
194 | sempat
195 | adanya
196 | hidup
197 | datang
198 | senin
199 | rasa
200 | maupun
201 | seluruh
202 | mantan
203 | lama
204 | jenis
205 | segera
206 | misalnya
207 | mendapat
208 | bawah
209 | jangan
210 | meski
211 | terlihat
212 | akhirnya
213 | jumat
214 | punya
215 | yakni
216 | terakhir
217 | kecil
218 | panjang
219 | badan
220 | juni
221 | of
222 | jelas
223 | jauh
224 | tentu
225 | semakin
226 | tinggal
227 | kurang
228 | mampu
229 | posisi
230 | asal
231 | sekali
232 | sesuai
233 | sebesar
234 | berat
235 | dirinya
236 | memberi
237 | pagi
238 | sabtu
239 | ternyata
240 | mencari
241 | sumber
242 | ruang
243 | menunjukkan
244 | biasanya
245 | nama
246 | sebanyak
247 | utara
248 | berlangsung
249 | barat
250 | kemungkinan
251 | yaitu
252 | berdasarkan
253 | sebenarnya
254 | cara
255 | utama
256 | pekan
257 | terlalu
258 | membawa
259 | kebutuhan
260 | suatu
261 | menerima
262 | penting
263 | tanggal
264 | bagaimana
265 | terutama
266 | tingkat
267 | awal
268 | sedikit
269 | nanti
270 | pasti
271 | muncul
272 | dekat
273 | lanjut
274 | ketiga
275 | biasa
276 | dulu
277 | kesempatan
278 | ribu
279 | akhir
280 | membantu
281 | terkait
282 | sebab
283 | menyebabkan
284 | khusus
285 | bentuk
286 | ditemukan
287 | diduga
288 | mana
289 | ya
290 | kegiatan
291 | sebagian
292 | tampil
293 | hampir
294 | bertemu
295 | usai
296 | berarti
297 | keluar
298 | pula
299 | digunakan
300 | justru
301 | padahal
302 | menyebutkan
303 | gedung
304 | apalagi
305 | program
306 | milik
307 | teman
308 | menjalani
309 | keputusan
310 | sumber
311 | a
312 | upaya
313 | mengetahui
314 | mempunyai
315 | berjalan
316 | menjelaskan
317 | b
318 | mengambil
319 | benar
320 | lewat
321 | belakang
322 | ikut
323 | barang
324 | meningkatkan
325 | kejadian
326 | kehidupan
327 | keterangan
328 | penggunaan
329 | masing-masing
330 | menghadapi
331 | ]
332 |
--------------------------------------------------------------------------------
/src/main/resources/ja.conf:
--------------------------------------------------------------------------------
1 | lang.ja.stopwords = [
2 | これ
3 | それ
4 | あれ
5 | この
6 | その
7 | あの
8 | ここ
9 | そこ
10 | あそこ
11 | こちら
12 | どこ
13 | だれ
14 | なに
15 | なん
16 | 何
17 | 私
18 | 貴方
19 | 貴方方
20 | 我々
21 | 私達
22 | あの人
23 | あのかた
24 | 彼女
25 | 彼
26 | です
27 | あります
28 | おります
29 | います
30 | は
31 | が
32 | の
33 | に
34 | を
35 | で
36 | え
37 | から
38 | まで
39 | より
40 | も
41 | どの
42 | と
43 | し
44 | それで
45 | しかし
46 | ]
47 |
--------------------------------------------------------------------------------
/src/main/resources/nl.conf:
--------------------------------------------------------------------------------
1 | lang.nl.stopwords = [
2 | aan
3 | af
4 | al
5 | alles
6 | als
7 | altijd
8 | andere
9 | ben
10 | bij
11 | daar
12 | dan
13 | dat
14 | de
15 | der
16 | deze
17 | die
18 | dit
19 | doch
20 | doen
21 | door
22 | dus
23 | een
24 | eens
25 | en
26 | er
27 | ge
28 | geen
29 | geweest
30 | haar
31 | had
32 | heb
33 | hebben
34 | heeft
35 | hem
36 | het
37 | hier
38 | hij
39 | hoe
40 | hun
41 | iemand
42 | iets
43 | ik
44 | in
45 | is
46 | ja
47 | je
48 | kan
49 | kon
50 | kunnen
51 | maar
52 | me
53 | meer
54 | men
55 | met
56 | mij
57 | mijn
58 | moet
59 | na
60 | naar
61 | niet
62 | niets
63 | nog
64 | nu
65 | of
66 | om
67 | omdat
68 | ons
69 | ook
70 | op
71 | over
72 | reeds
73 | te
74 | tegen
75 | toch
76 | toen
77 | tot
78 | u
79 | uit
80 | uw
81 | van
82 | veel
83 | voor
84 | want
85 | waren
86 | was
87 | wat
88 | we
89 | wel
90 | werd
91 | wezen
92 | wie
93 | wij
94 | wil
95 | worden
96 | zal
97 | ze
98 | zei
99 | zelf
100 | zich
101 | zij
102 | zijn
103 | zo
104 | zonder
105 | zou
106 | ]
107 |
--------------------------------------------------------------------------------
/src/main/resources/reference.conf:
--------------------------------------------------------------------------------
1 | include "/ar.conf"
2 | include "/de.conf"
3 | include "/en.conf"
4 | include "/es.conf"
5 | include "/fr.conf"
6 | include "/in.conf"
7 | include "/ja.conf"
8 | include "/ms.conf"
9 | include "/nl.conf"
10 | include "/pt.conf"
11 | include "/sv.conf"
12 | include "/tr.conf"
13 |
14 | lang.classify {
15 | default_threshold = 0.85
16 | default_frequency = 0.1
17 | min_text_size = 10
18 | }
19 |
--------------------------------------------------------------------------------
/src/main/resources/tr.conf:
--------------------------------------------------------------------------------
1 | lang.tr.stopwords = [
2 | acaba
3 | altmýþ
4 | altý
5 | ama
6 | bana
7 | bazý
8 | belki
9 | ben
10 | benden
11 | beni
12 | benim
13 | beþ
14 | bin
15 | bir
16 | biri
17 | birkaç
18 | birkez
19 | birþey
20 | birþeyi
21 | biz
22 | bizden
23 | bizi
24 | bizim
25 | bu
26 | buna
27 | bunda
28 | bundan
29 | bunu
30 | bunun
31 | da
32 | daha
33 | dahi
34 | de
35 | defa
36 | diye
37 | doksan
38 | dokuz
39 | dört
40 | elli
41 | en
42 | gibi
43 | hem
44 | hep
45 | hepsi
46 | her
47 | hiç
48 | iki
49 | ile
50 | INSERmi
51 | ise
52 | için
53 | katrilyon
54 | kez
55 | ki
56 | kim
57 | kimden
58 | kime
59 | kimi
60 | kýrk
61 | milyar
62 | milyon
63 | mu
64 | mü
65 | mý
66 | nasýl
67 | ne
68 | neden
69 | nerde
70 | nerede
71 | nereye
72 | niye
73 | niçin
74 | on
75 | ona
76 | ondan
77 | onlar
78 | onlardan
79 | onlari
80 | onlarýn
81 | onu
82 | otuz
83 | sanki
84 | sekiz
85 | seksen
86 | sen
87 | senden
88 | seni
89 | senin
90 | siz
91 | sizden
92 | sizi
93 | sizin
94 | trilyon
95 | tüm
96 | ve
97 | veya
98 | ya
99 | yani
100 | yedi
101 | yetmiþ
102 | yirmi
103 | yüz
104 | çok
105 | çünkü
106 | üç
107 | þey
108 | þeyden
109 | þeyi
110 | þeyler
111 | þu
112 | þuna
113 | þunda
114 | þundan
115 | þunu
116 | ]
117 |
--------------------------------------------------------------------------------
/src/main/scala/com/peoplepattern/text/Implicits.scala:
--------------------------------------------------------------------------------
1 | package com.peoplepattern.text
2 |
3 | import java.net.{ URL, MalformedURLException }
4 |
5 | object Implicits {
6 |
7 | /** Helpers to provide access to LangBundle and StringUtil stuff on strings */
8 | implicit class StringWithAnalysis(str: String) {
9 |
10 | /** The detected language of the string, if predicted */
11 | lazy val lang: Option[String] = LanguageIdentifier.classify(str).map(_._1)
12 |
13 | /** The language bundle for the string based on it's predicted language */
14 | lazy val bundle: LangBundle = LangBundle.bundleForLang(lang)
15 |
16 | /** The tokens of the string using language specific tokenization */
17 | lazy val tokens: Vector[String] = bundle.tokens(str)
18 |
19 | /** The terms of the string using language specific tokens & stopwords */
20 | lazy val terms: Set[String] = bundle.terms(tokens)
21 |
22 | /** The terms + hashtags + @-mentions of the string */
23 | lazy val termsPlus: Set[String] = bundle.termsPlus(tokens)
24 |
25 | /** The term bigrams of the string */
26 | lazy val termBigrams: Set[String] = termNgrams(2, 2)
27 |
28 | /** The term 3-grams of the string */
29 | lazy val termTrigrams: Set[String] = termNgrams(3, 3)
30 |
31 | /**
32 | * Extract term n-grams from the string
33 | *
34 | * @param min the minimum n-gram length to extract
35 | * @param max the maximum n-gram length to extract
36 | */
37 | def termNgrams(min: Int, max: Int) = bundle.termNgrams(tokens, min, max)
38 |
39 | /** Whether the string is empty or only white-space */
40 | def isBlank: Boolean = StringUtil.isBlank(str)
41 |
42 | /** Whether the string is *not* empty or only white-space */
43 | def nonBlank: Boolean = !isBlank
44 |
45 | /**
46 | * Extract counts of the char n-grams in the string
47 | *
48 | * @param min the minimum n-gram length to extract
49 | * @param max the maximum n-gram length to extract
50 | */
51 | def charNgrams(min: Int, max: Int): Map[String, Int] = StringUtil.charNgrams(str, min, max)
52 |
53 | /** Extract counts of the char bigrams in the string */
54 | def charBigrams: Map[String, Int] = charNgrams(2, 2)
55 |
56 | /** The term as a URL, if it can be parsed as such */
57 | lazy val asUrl: Option[URL] = try {
58 | Some(new URL(str))
59 | } catch {
60 | case _: MalformedURLException => None
61 | }
62 |
63 | /** The terms as a simplified URL if it can be parsed as such */
64 | lazy val simplifiedUrl: Option[String] = asUrl.map(StringUtil.simplifyUrl)
65 |
66 | /** Whether the string can be parsed as a URL */
67 | def isUrl: Boolean = asUrl.nonEmpty
68 |
69 | /** Some(this) if the string is non-empty and doesn't contain only white-space */
70 | def asOpt: Option[String] = StringUtil.asOpt(str)
71 | }
72 | }
73 |
--------------------------------------------------------------------------------
/src/main/scala/com/peoplepattern/text/JaLangBundle.scala:
--------------------------------------------------------------------------------
1 | package com.peoplepattern.text
2 |
3 | import scala.collection.mutable.Buffer
4 | import scala.collection.JavaConverters._
5 | import com.atilika.kuromoji.ipadic.Tokenizer
6 |
7 | /**
8 | * Custom language bundle for Japanese
9 | *
10 | * Uses Kuromoji for tokenization https://github.com/atilika/kuromoji
11 | */
12 | @SerialVersionUID(1)
13 | class JaLangBundle(val stopwords: Set[String])
14 | extends LangBundle with Serializable {
15 |
16 | @transient lazy val tokenizer = new Tokenizer
17 |
18 | /**
19 | * Whether the char is in the ASCII range
20 | */
21 | private def asciichar(c: Char): Boolean = 0.toChar <= c && c <= 255.toChar
22 |
23 | private def asciiSplit(text: String): Vector[(String, Boolean)] = {
24 | var tmp = text
25 | val buf = Buffer.empty[(String, Boolean)]
26 | while (tmp.nonEmpty) {
27 | val ascii = tmp.takeWhile(asciichar)
28 | if (ascii.nonEmpty) {
29 | buf += ascii.toString -> true
30 | tmp = tmp.drop(ascii.size)
31 | }
32 |
33 | val nonascii = tmp.takeWhile(!asciichar(_))
34 | if (nonascii.nonEmpty) {
35 | buf += nonascii.toString -> false
36 | tmp = tmp.drop(nonascii.size)
37 | }
38 | }
39 | buf.toVector
40 | }
41 |
42 | /**
43 | * Pure japanese text tokenization using Kuromoji
44 | */
45 | def jatokens(text: String): Vector[String] = {
46 | tokenizer.tokenize(text).asScala.toVector.map(_.getSurface)
47 | }
48 |
49 | override def tokens(text: String) = {
50 | /* Split the text into block of ASCII and non-ASCII
51 | * - Tokenize the ASCII with the default method to get hashtags, URLs, emails etc
52 | * - Tokenize the non-ASCII with Kuromoji
53 | */
54 | val tokens = asciiSplit(text).flatMap {
55 | case (block, isAscii) => {
56 | if (isAscii) {
57 | super.tokens(block)
58 | } else {
59 | jatokens(block)
60 | }
61 | }
62 | }
63 |
64 | if (tokens.contains("#")) {
65 | // Post process YET AGAIN to make sure we merge in any Japanese hashtags
66 | val buf = Buffer.empty[String]
67 | var j = 0
68 | while (j < tokens.size) {
69 | if (tokens(j) == "#" && j + 1 < tokens.size && tokens(j + 1).nonEmpty && tokens(j + 1).head.isLetter) {
70 | buf += (tokens(j) ++ tokens(j + 1))
71 | j += 2
72 | } else {
73 | buf += tokens(j)
74 | j += 1
75 | }
76 | }
77 | buf.toVector
78 | } else {
79 | tokens
80 | }
81 | }
82 | }
83 |
84 | object JaLangBundle extends JaLangBundle(LangBundle.stopwords("ja"))
85 |
--------------------------------------------------------------------------------
/src/main/scala/com/peoplepattern/text/StringUtil.scala:
--------------------------------------------------------------------------------
1 | package com.peoplepattern.text
2 |
3 | import scala.collection.mutable
4 | import java.net.{ URL, MalformedURLException }
5 |
6 | object StringUtil {
7 |
8 | /** Determine if the string is null or only contains white-space */
9 | def isBlank(s: String): Boolean = Option(s) match {
10 | case Some(str) => str.trim.isEmpty
11 | case _ => true
12 | }
13 |
14 | /** Counts of the character n-grams in the string */
15 | def charNgrams(s: String, min: Int, max: Int): Map[String, Int] = {
16 | val mmap = mutable.Map.empty[String, Int].withDefaultValue(0)
17 | for {
18 | len <- min to max
19 | ngram <- s.sliding(len)
20 | } mmap(ngram) += 1
21 | mmap.toMap
22 | }
23 |
24 | /** Counts of the character 2-grams in the string */
25 | def charBigrams(s: String) = charNgrams(s, 2, 2)
26 |
27 | /** Whether the string contains a URL */
28 | def isUrl(s: String): Boolean = try {
29 | val u = new URL(s)
30 | u != null
31 | } catch {
32 | case _: MalformedURLException => false
33 | }
34 |
35 | /**
36 | * Simplify a URL into something less unique
37 | *
38 | * Eg simplifyUrl(http://money.cnn.com/video/technology/2015/11/30/tech-gift-guide-selfie-gadgets.cnnmoney/index.html)
39 | * is simplified to money.cnn.com/video
40 | */
41 | def simplifyUrl(u: URL): String = simplifyUrl(u, None, 1, false)
42 |
43 | /**
44 | * Simplify a URL into something less unique
45 | *
46 | * @param u the URL
47 | * @param prefix prefix to append to the simplified URL, e.g. "url:"
48 | * @param path the number of parts of the path to keep, e.g. with path = 2 "video/technology/2015" -> "video/technology"
49 | * @param keepProtocol if true, keep the "http" or "https" part of the URL
50 | */
51 | def simplifyUrl(
52 | u: URL,
53 | prefix: Option[String],
54 | path: Int,
55 | keepProtocol: Boolean): String = {
56 | val sb = new StringBuilder
57 | prefix foreach { p =>
58 | sb ++= p
59 | }
60 | if (keepProtocol) {
61 | sb ++= u.getProtocol ++= "://"
62 | }
63 | sb ++= u.getHost
64 | if (path > 0) {
65 | val urlPath = u.getPath
66 | val simplifiedPath = urlPath.split("/").dropWhile(_.isEmpty).take(path)
67 | if (simplifiedPath.nonEmpty) {
68 | sb ++= "/" ++= simplifiedPath.mkString("/")
69 | }
70 | }
71 | sb.toString
72 | }
73 |
74 | /** Convert a string to Some(s) if it's not blank or null, otherwise None */
75 | def asOpt(s: String): Option[String] = {
76 | if (isBlank(s)) None else Some(s)
77 | }
78 | }
79 |
--------------------------------------------------------------------------------
/src/main/scala/com/peoplepattern/text/package.scala:
--------------------------------------------------------------------------------
1 | package com.peoplepattern
2 |
3 | /**
4 | * Text processing utilities for language prediction, tokenization, term extraction etc
5 | *
6 | *
7 | * See [[LangBundle]] for tokenization and term extraction
8 | * See [[LanguageIdentifier]] for language identification
9 | * See [[StringUtil]] for low-level string helpers
10 | * See [[Implicits.StringWithAnalysis]] for implicit helper methods for strings
11 | *
12 | */
13 | package object text
14 |
--------------------------------------------------------------------------------
/src/test/scala/com/peoplepattern/text/JaLangBundleSpec.scala:
--------------------------------------------------------------------------------
1 | package com.peoplepattern.text
2 |
3 | import org.scalatest._
4 | import java.io._
5 |
6 | class JaLangBundleSpec extends FlatSpec {
7 |
8 | "JaLangBundle" should "tokenize basic text" in {
9 | val text = "お寿司が食べたい。"
10 | val expected = Vector("お", "寿司", "が", "食べ", "たい", "。")
11 | assert(JaLangBundle.tokens(text) == expected)
12 | }
13 |
14 | it should "handle empty strings" in {
15 | val text = ""
16 | val expected = Vector.empty[String]
17 | assert(JaLangBundle.tokens(text) == expected)
18 | }
19 |
20 | it should "handle western punctuation" in {
21 | val text = "お寿司が食べたい."
22 | val expected = Vector("お", "寿司", "が", "食べ", "たい", ".")
23 | assert(JaLangBundle.tokens(text) == expected)
24 | }
25 |
26 | it should "handle hashtags and URLs" in {
27 | val text = "スターバックス今年最後の限定ドリンクは、まるで”飲むデザート”?!http://bit.ly/1k464Fq #starbucks #deseart"
28 | val expected = Vector("スター", "バックス", "今年", "最後", "の", "限定", "ドリンク", "は", "、", "まるで", "”", "飲む", "デザート", "”", "?", "!", "http://bit.ly/1k464Fq", "#starbucks", "#deseart")
29 | assert(JaLangBundle.tokens(text) == expected)
30 | }
31 |
32 | it should "get Japanese hashtags" in {
33 | val text = "究極サンタサクヤちゃんの画面写真です!!!#パズドラ "
34 | val expected = Vector("究極", "サンタサクヤ", "ちゃん", "の", "画面", "写真", "です", "!", "!", "!", "#パズドラ")
35 | assert(JaLangBundle.tokens(text) == expected)
36 | }
37 |
38 | it should "handle a hashtag in the middle of a text" in {
39 | val text = "ブログ更新☆ 「第5回東京ガールギークディナー」で女性の役に立つお話を聞いてきたよ #TGGD: テック系女子のイベントで女性のキャリアや考え方に役立つお話を聞いてきましたよ。ふむふむ&あるある!という感じでとても楽しい... http://bit.ly/16bZHC5 "
40 | val expected = Vector("ブログ", "更新", "☆", "「", "第", "5", "回", "東京", "ガールギークディナー", "」", "で", "女性", "の", "役に立つ", "お話", "を", "聞い", "て", "き", "た", "よ", "#TGGD", ":", "テック", "系", "女子", "の", "イベント", "で", "女性", "の", "キャリア", "や", "考え方", "に", "役立つ", "お話", "を", "聞い", "て", "き", "まし", "た", "よ", "。", "ふむふむ", "&", "ある", "ある", "!", "という", "感じ", "で", "とても", "楽しい", "...", "http://bit.ly/16bZHC5")
41 | assert(JaLangBundle.tokens(text) == expected)
42 | }
43 |
44 | it should "serliaize OK" in {
45 | val original = JaLangBundle
46 | val bos = new ByteArrayOutputStream()
47 | val bytes = try {
48 | val oos = new ObjectOutputStream(bos)
49 | oos.writeObject(original)
50 | bos.toByteArray
51 | } finally {
52 | bos.close()
53 | }
54 | val bis = new ByteArrayInputStream(bytes)
55 | val unmarshalled = try {
56 | val ois = new ObjectInputStream(bis)
57 | ois.readObject.asInstanceOf[LangBundle]
58 | } finally {
59 | bis.close()
60 | }
61 | assert(original.stopwords == unmarshalled.stopwords)
62 | val tweet = "究極サンタサクヤちゃんの画面写真です!!!#パズドラ "
63 | assert(original.termsPlus(tweet) == unmarshalled.termsPlus(tweet))
64 | }
65 | }
66 |
--------------------------------------------------------------------------------
/src/test/scala/com/peoplepattern/text/LanguageIdentifierSpec.scala:
--------------------------------------------------------------------------------
1 | package com.peoplepattern.text
2 |
3 | import org.scalatest._
4 | import java.io._
5 |
6 | class LanguageIdentifierSpec extends FlatSpec {
7 | val enTxt = "this is english"
8 | val frTxt = "ceci est le français"
9 |
10 | val impl = LanguageIdentifier
11 |
12 | "LanguageIdentifier default impl" should "predict en" in {
13 | assert(impl.classify(enTxt).map(_._1) == Some("en"))
14 | }
15 |
16 | it should "predict fr" in {
17 | assert(impl.classify(frTxt).map(_._1) == Some("fr"))
18 | }
19 |
20 | it should "summarize text with the right frequency" in {
21 | val sum = impl.summarize(Seq(enTxt, enTxt, enTxt, frTxt, frTxt))
22 | assert(sum.size == 2)
23 | assert(sum(0)._1 == "en")
24 | assert(sum(0)._3 == 0.6)
25 | assert(sum(1)._1 == "fr")
26 | assert(sum(1)._3 == 0.4)
27 | }
28 |
29 | it should "return no predictions with high threshold" in {
30 | assert(impl.classify(enTxt, 1.0, 10) == None)
31 | }
32 |
33 | it should "return no predicitons when text is too short" in {
34 | assert(impl.classify(enTxt, 0.5, 100) == None)
35 | }
36 |
37 | it should "serialize OK" in {
38 | val original = LanguageIdentifier
39 | val bos = new ByteArrayOutputStream()
40 | val bytes = try {
41 | val oos = new ObjectOutputStream(bos)
42 | oos.writeObject(original)
43 | bos.toByteArray
44 | } finally {
45 | bos.close()
46 | }
47 | val bis = new ByteArrayInputStream(bytes)
48 | val unmarshalled = try {
49 | val ois = new ObjectInputStream(bis)
50 | ois.readObject.asInstanceOf[LanguageIdentifier]
51 | } finally {
52 | bis.close()
53 | }
54 | assert(original.classify(enTxt) == unmarshalled.classify(enTxt))
55 | assert(original.classify(frTxt) == unmarshalled.classify(frTxt))
56 | }
57 | }
58 |
--------------------------------------------------------------------------------
/version.sbt:
--------------------------------------------------------------------------------
1 | version in ThisBuild := "0.3.2"
--------------------------------------------------------------------------------