Showing preview only (2,822K chars total). Download the full file or copy to clipboard to get everything.
Repository: pockethub/PocketHub
Branch: master
Commit: 8228cb8f7197
Files: 732
Total size: 2.5 MB
Directory structure:
gitextract_6u3neemq/
├── .gitattributes
├── .gitignore
├── .travis.yml
├── CONTRIBUTING.md
├── ISSUE_TEMPLATE.md
├── LICENSE
├── README.md
├── app/
│ ├── build.gradle
│ ├── quality.gradle
│ └── src/
│ ├── androidTest/
│ │ ├── AndroidManifest.xml
│ │ └── java/
│ │ └── com/
│ │ └── github/
│ │ └── pockethub/
│ │ └── android/
│ │ └── tests/
│ │ ├── NewsEventTextTest.java
│ │ ├── ViewVisibiltyIdlingResource.kt
│ │ ├── commit/
│ │ │ ├── CommitUriMatcherTest.java
│ │ │ ├── CommitUtilsTest.java
│ │ │ ├── CreateCommentActivityTest.java
│ │ │ ├── DiffStylerTest.java
│ │ │ └── FullCommitTest.java
│ │ ├── gist/
│ │ │ ├── CreateCommentActivityTest.java
│ │ │ ├── CreateGistActivityTest.java
│ │ │ ├── GistFilesViewActivityTest.java
│ │ │ ├── GistStoreTest.java
│ │ │ └── GistUriMatcherTest.java
│ │ ├── issue/
│ │ │ ├── CreateCommentActivityTest.java
│ │ │ ├── EditIssueActivityTest.java
│ │ │ ├── EditIssuesFilterActivityTest.java
│ │ │ ├── IssueFilterTest.java
│ │ │ ├── IssueStoreTest.java
│ │ │ └── IssueUriMatcherTest.java
│ │ ├── ref/
│ │ │ └── RefUtilsTest.java
│ │ ├── repo/
│ │ │ ├── RecentRepositoriesTest.java
│ │ │ ├── RepositoryEventMatcherTest.java
│ │ │ ├── RepositoryUriMatcherTest.java
│ │ │ └── SearchActivityTest.java
│ │ ├── user/
│ │ │ ├── UserComparatorTest.java
│ │ │ └── UserUriMatcherTest.java
│ │ └── util/
│ │ └── HtmlUtilsTest.java
│ ├── debug/
│ │ └── res/
│ │ └── values/
│ │ └── strings.xml
│ ├── main/
│ │ ├── AndroidManifest.xml
│ │ ├── assets/
│ │ │ ├── code_mirror/
│ │ │ │ ├── LICENSE
│ │ │ │ ├── VERSION
│ │ │ │ ├── addon/
│ │ │ │ │ ├── comment/
│ │ │ │ │ │ ├── comment.js
│ │ │ │ │ │ └── continuecomment.js
│ │ │ │ │ ├── dialog/
│ │ │ │ │ │ ├── dialog.css
│ │ │ │ │ │ └── dialog.js
│ │ │ │ │ ├── display/
│ │ │ │ │ │ ├── autorefresh.js
│ │ │ │ │ │ ├── fullscreen.css
│ │ │ │ │ │ ├── fullscreen.js
│ │ │ │ │ │ ├── panel.js
│ │ │ │ │ │ ├── placeholder.js
│ │ │ │ │ │ └── rulers.js
│ │ │ │ │ ├── edit/
│ │ │ │ │ │ ├── closebrackets.js
│ │ │ │ │ │ ├── closetag.js
│ │ │ │ │ │ ├── continuelist.js
│ │ │ │ │ │ ├── matchbrackets.js
│ │ │ │ │ │ ├── matchtags.js
│ │ │ │ │ │ └── trailingspace.js
│ │ │ │ │ ├── fold/
│ │ │ │ │ │ ├── brace-fold.js
│ │ │ │ │ │ ├── comment-fold.js
│ │ │ │ │ │ ├── foldcode.js
│ │ │ │ │ │ ├── foldgutter.css
│ │ │ │ │ │ ├── foldgutter.js
│ │ │ │ │ │ ├── indent-fold.js
│ │ │ │ │ │ ├── markdown-fold.js
│ │ │ │ │ │ └── xml-fold.js
│ │ │ │ │ ├── hint/
│ │ │ │ │ │ ├── anyword-hint.js
│ │ │ │ │ │ ├── css-hint.js
│ │ │ │ │ │ ├── html-hint.js
│ │ │ │ │ │ ├── javascript-hint.js
│ │ │ │ │ │ ├── show-hint.css
│ │ │ │ │ │ ├── show-hint.js
│ │ │ │ │ │ ├── sql-hint.js
│ │ │ │ │ │ └── xml-hint.js
│ │ │ │ │ ├── lint/
│ │ │ │ │ │ ├── coffeescript-lint.js
│ │ │ │ │ │ ├── css-lint.js
│ │ │ │ │ │ ├── html-lint.js
│ │ │ │ │ │ ├── javascript-lint.js
│ │ │ │ │ │ ├── json-lint.js
│ │ │ │ │ │ ├── lint.css
│ │ │ │ │ │ ├── lint.js
│ │ │ │ │ │ └── yaml-lint.js
│ │ │ │ │ ├── merge/
│ │ │ │ │ │ ├── merge.css
│ │ │ │ │ │ └── merge.js
│ │ │ │ │ ├── mode/
│ │ │ │ │ │ ├── loadmode.js
│ │ │ │ │ │ ├── multiplex.js
│ │ │ │ │ │ ├── multiplex_test.js
│ │ │ │ │ │ ├── overlay.js
│ │ │ │ │ │ └── simple.js
│ │ │ │ │ ├── runmode/
│ │ │ │ │ │ ├── colorize.js
│ │ │ │ │ │ ├── runmode-standalone.js
│ │ │ │ │ │ ├── runmode.js
│ │ │ │ │ │ └── runmode.node.js
│ │ │ │ │ ├── scroll/
│ │ │ │ │ │ ├── annotatescrollbar.js
│ │ │ │ │ │ ├── scrollpastend.js
│ │ │ │ │ │ ├── simplescrollbars.css
│ │ │ │ │ │ └── simplescrollbars.js
│ │ │ │ │ ├── search/
│ │ │ │ │ │ ├── jump-to-line.js
│ │ │ │ │ │ ├── match-highlighter.js
│ │ │ │ │ │ ├── matchesonscrollbar.css
│ │ │ │ │ │ ├── matchesonscrollbar.js
│ │ │ │ │ │ ├── search.js
│ │ │ │ │ │ └── searchcursor.js
│ │ │ │ │ ├── selection/
│ │ │ │ │ │ ├── active-line.js
│ │ │ │ │ │ ├── mark-selection.js
│ │ │ │ │ │ └── selection-pointer.js
│ │ │ │ │ ├── tern/
│ │ │ │ │ │ ├── tern.css
│ │ │ │ │ │ ├── tern.js
│ │ │ │ │ │ └── worker.js
│ │ │ │ │ └── wrap/
│ │ │ │ │ └── hardwrap.js
│ │ │ │ ├── lib/
│ │ │ │ │ ├── codemirror.css
│ │ │ │ │ └── codemirror.js
│ │ │ │ ├── mode/
│ │ │ │ │ ├── apl/
│ │ │ │ │ │ └── apl.js
│ │ │ │ │ ├── asciiarmor/
│ │ │ │ │ │ └── asciiarmor.js
│ │ │ │ │ ├── asn.1/
│ │ │ │ │ │ └── asn.1.js
│ │ │ │ │ ├── asterisk/
│ │ │ │ │ │ └── asterisk.js
│ │ │ │ │ ├── brainfuck/
│ │ │ │ │ │ └── brainfuck.js
│ │ │ │ │ ├── clike/
│ │ │ │ │ │ └── clike.js
│ │ │ │ │ ├── clojure/
│ │ │ │ │ │ └── clojure.js
│ │ │ │ │ ├── cmake/
│ │ │ │ │ │ └── cmake.js
│ │ │ │ │ ├── cobol/
│ │ │ │ │ │ └── cobol.js
│ │ │ │ │ ├── coffeescript/
│ │ │ │ │ │ └── coffeescript.js
│ │ │ │ │ ├── commonlisp/
│ │ │ │ │ │ └── commonlisp.js
│ │ │ │ │ ├── crystal/
│ │ │ │ │ │ └── crystal.js
│ │ │ │ │ ├── css/
│ │ │ │ │ │ └── css.js
│ │ │ │ │ ├── cypher/
│ │ │ │ │ │ └── cypher.js
│ │ │ │ │ ├── d/
│ │ │ │ │ │ └── d.js
│ │ │ │ │ ├── dart/
│ │ │ │ │ │ └── dart.js
│ │ │ │ │ ├── diff/
│ │ │ │ │ │ └── diff.js
│ │ │ │ │ ├── django/
│ │ │ │ │ │ └── django.js
│ │ │ │ │ ├── dockerfile/
│ │ │ │ │ │ └── dockerfile.js
│ │ │ │ │ ├── dtd/
│ │ │ │ │ │ └── dtd.js
│ │ │ │ │ ├── dylan/
│ │ │ │ │ │ └── dylan.js
│ │ │ │ │ ├── ebnf/
│ │ │ │ │ │ └── ebnf.js
│ │ │ │ │ ├── ecl/
│ │ │ │ │ │ └── ecl.js
│ │ │ │ │ ├── eiffel/
│ │ │ │ │ │ └── eiffel.js
│ │ │ │ │ ├── elm/
│ │ │ │ │ │ └── elm.js
│ │ │ │ │ ├── erlang/
│ │ │ │ │ │ └── erlang.js
│ │ │ │ │ ├── factor/
│ │ │ │ │ │ └── factor.js
│ │ │ │ │ ├── fcl/
│ │ │ │ │ │ └── fcl.js
│ │ │ │ │ ├── forth/
│ │ │ │ │ │ └── forth.js
│ │ │ │ │ ├── fortran/
│ │ │ │ │ │ └── fortran.js
│ │ │ │ │ ├── gas/
│ │ │ │ │ │ └── gas.js
│ │ │ │ │ ├── gfm/
│ │ │ │ │ │ └── gfm.js
│ │ │ │ │ ├── gherkin/
│ │ │ │ │ │ └── gherkin.js
│ │ │ │ │ ├── go/
│ │ │ │ │ │ └── go.js
│ │ │ │ │ ├── groovy/
│ │ │ │ │ │ └── groovy.js
│ │ │ │ │ ├── haml/
│ │ │ │ │ │ └── haml.js
│ │ │ │ │ ├── handlebars/
│ │ │ │ │ │ └── handlebars.js
│ │ │ │ │ ├── haskell/
│ │ │ │ │ │ └── haskell.js
│ │ │ │ │ ├── haskell-literate/
│ │ │ │ │ │ └── haskell-literate.js
│ │ │ │ │ ├── haxe/
│ │ │ │ │ │ └── haxe.js
│ │ │ │ │ ├── htmlembedded/
│ │ │ │ │ │ └── htmlembedded.js
│ │ │ │ │ ├── htmlmixed/
│ │ │ │ │ │ └── htmlmixed.js
│ │ │ │ │ ├── http/
│ │ │ │ │ │ └── http.js
│ │ │ │ │ ├── idl/
│ │ │ │ │ │ └── idl.js
│ │ │ │ │ ├── javascript/
│ │ │ │ │ │ └── javascript.js
│ │ │ │ │ ├── jinja2/
│ │ │ │ │ │ └── jinja2.js
│ │ │ │ │ ├── jsx/
│ │ │ │ │ │ └── jsx.js
│ │ │ │ │ ├── julia/
│ │ │ │ │ │ └── julia.js
│ │ │ │ │ ├── livescript/
│ │ │ │ │ │ └── livescript.js
│ │ │ │ │ ├── lua/
│ │ │ │ │ │ └── lua.js
│ │ │ │ │ ├── markdown/
│ │ │ │ │ │ └── markdown.js
│ │ │ │ │ ├── mathematica/
│ │ │ │ │ │ └── mathematica.js
│ │ │ │ │ ├── mbox/
│ │ │ │ │ │ └── mbox.js
│ │ │ │ │ ├── meta.js
│ │ │ │ │ ├── mirc/
│ │ │ │ │ │ └── mirc.js
│ │ │ │ │ ├── mllike/
│ │ │ │ │ │ └── mllike.js
│ │ │ │ │ ├── modelica/
│ │ │ │ │ │ └── modelica.js
│ │ │ │ │ ├── mscgen/
│ │ │ │ │ │ └── mscgen.js
│ │ │ │ │ ├── mumps/
│ │ │ │ │ │ └── mumps.js
│ │ │ │ │ ├── nginx/
│ │ │ │ │ │ └── nginx.js
│ │ │ │ │ ├── nsis/
│ │ │ │ │ │ └── nsis.js
│ │ │ │ │ ├── ntriples/
│ │ │ │ │ │ └── ntriples.js
│ │ │ │ │ ├── octave/
│ │ │ │ │ │ └── octave.js
│ │ │ │ │ ├── oz/
│ │ │ │ │ │ └── oz.js
│ │ │ │ │ ├── pascal/
│ │ │ │ │ │ └── pascal.js
│ │ │ │ │ ├── pegjs/
│ │ │ │ │ │ └── pegjs.js
│ │ │ │ │ ├── perl/
│ │ │ │ │ │ └── perl.js
│ │ │ │ │ ├── php/
│ │ │ │ │ │ └── php.js
│ │ │ │ │ ├── pig/
│ │ │ │ │ │ └── pig.js
│ │ │ │ │ ├── powershell/
│ │ │ │ │ │ └── powershell.js
│ │ │ │ │ ├── properties/
│ │ │ │ │ │ └── properties.js
│ │ │ │ │ ├── protobuf/
│ │ │ │ │ │ └── protobuf.js
│ │ │ │ │ ├── pug/
│ │ │ │ │ │ └── pug.js
│ │ │ │ │ ├── puppet/
│ │ │ │ │ │ └── puppet.js
│ │ │ │ │ ├── python/
│ │ │ │ │ │ └── python.js
│ │ │ │ │ ├── q/
│ │ │ │ │ │ └── q.js
│ │ │ │ │ ├── r/
│ │ │ │ │ │ └── r.js
│ │ │ │ │ ├── rpm/
│ │ │ │ │ │ └── rpm.js
│ │ │ │ │ ├── rst/
│ │ │ │ │ │ └── rst.js
│ │ │ │ │ ├── ruby/
│ │ │ │ │ │ └── ruby.js
│ │ │ │ │ ├── rust/
│ │ │ │ │ │ └── rust.js
│ │ │ │ │ ├── sas/
│ │ │ │ │ │ └── sas.js
│ │ │ │ │ ├── sass/
│ │ │ │ │ │ └── sass.js
│ │ │ │ │ ├── scheme/
│ │ │ │ │ │ └── scheme.js
│ │ │ │ │ ├── shell/
│ │ │ │ │ │ └── shell.js
│ │ │ │ │ ├── sieve/
│ │ │ │ │ │ └── sieve.js
│ │ │ │ │ ├── slim/
│ │ │ │ │ │ └── slim.js
│ │ │ │ │ ├── smalltalk/
│ │ │ │ │ │ └── smalltalk.js
│ │ │ │ │ ├── smarty/
│ │ │ │ │ │ └── smarty.js
│ │ │ │ │ ├── solr/
│ │ │ │ │ │ └── solr.js
│ │ │ │ │ ├── soy/
│ │ │ │ │ │ └── soy.js
│ │ │ │ │ ├── sparql/
│ │ │ │ │ │ └── sparql.js
│ │ │ │ │ ├── spreadsheet/
│ │ │ │ │ │ └── spreadsheet.js
│ │ │ │ │ ├── sql/
│ │ │ │ │ │ └── sql.js
│ │ │ │ │ ├── stex/
│ │ │ │ │ │ └── stex.js
│ │ │ │ │ ├── stylus/
│ │ │ │ │ │ └── stylus.js
│ │ │ │ │ ├── swift/
│ │ │ │ │ │ └── swift.js
│ │ │ │ │ ├── tcl/
│ │ │ │ │ │ └── tcl.js
│ │ │ │ │ ├── textile/
│ │ │ │ │ │ └── textile.js
│ │ │ │ │ ├── tiddlywiki/
│ │ │ │ │ │ ├── tiddlywiki.css
│ │ │ │ │ │ └── tiddlywiki.js
│ │ │ │ │ ├── tiki/
│ │ │ │ │ │ ├── tiki.css
│ │ │ │ │ │ └── tiki.js
│ │ │ │ │ ├── toml/
│ │ │ │ │ │ └── toml.js
│ │ │ │ │ ├── tornado/
│ │ │ │ │ │ └── tornado.js
│ │ │ │ │ ├── troff/
│ │ │ │ │ │ └── troff.js
│ │ │ │ │ ├── ttcn/
│ │ │ │ │ │ └── ttcn.js
│ │ │ │ │ ├── ttcn-cfg/
│ │ │ │ │ │ └── ttcn-cfg.js
│ │ │ │ │ ├── turtle/
│ │ │ │ │ │ └── turtle.js
│ │ │ │ │ ├── twig/
│ │ │ │ │ │ └── twig.js
│ │ │ │ │ ├── vb/
│ │ │ │ │ │ └── vb.js
│ │ │ │ │ ├── vbscript/
│ │ │ │ │ │ └── vbscript.js
│ │ │ │ │ ├── velocity/
│ │ │ │ │ │ └── velocity.js
│ │ │ │ │ ├── verilog/
│ │ │ │ │ │ └── verilog.js
│ │ │ │ │ ├── vhdl/
│ │ │ │ │ │ └── vhdl.js
│ │ │ │ │ ├── vue/
│ │ │ │ │ │ └── vue.js
│ │ │ │ │ ├── webidl/
│ │ │ │ │ │ └── webidl.js
│ │ │ │ │ ├── xml/
│ │ │ │ │ │ └── xml.js
│ │ │ │ │ ├── xquery/
│ │ │ │ │ │ └── xquery.js
│ │ │ │ │ ├── yacas/
│ │ │ │ │ │ └── yacas.js
│ │ │ │ │ ├── yaml/
│ │ │ │ │ │ └── yaml.js
│ │ │ │ │ ├── yaml-frontmatter/
│ │ │ │ │ │ └── yaml-frontmatter.js
│ │ │ │ │ └── z80/
│ │ │ │ │ └── z80.js
│ │ │ │ └── theme/
│ │ │ │ ├── 3024-day.css
│ │ │ │ ├── 3024-night.css
│ │ │ │ ├── abcdef.css
│ │ │ │ ├── ambiance-mobile.css
│ │ │ │ ├── ambiance.css
│ │ │ │ ├── base16-dark.css
│ │ │ │ ├── base16-light.css
│ │ │ │ ├── bespin.css
│ │ │ │ ├── blackboard.css
│ │ │ │ ├── cobalt.css
│ │ │ │ ├── colorforth.css
│ │ │ │ ├── dracula.css
│ │ │ │ ├── eclipse.css
│ │ │ │ ├── elegant.css
│ │ │ │ ├── erlang-dark.css
│ │ │ │ ├── hopscotch.css
│ │ │ │ ├── icecoder.css
│ │ │ │ ├── isotope.css
│ │ │ │ ├── lesser-dark.css
│ │ │ │ ├── liquibyte.css
│ │ │ │ ├── material.css
│ │ │ │ ├── mbo.css
│ │ │ │ ├── mdn-like.css
│ │ │ │ ├── midnight.css
│ │ │ │ ├── monokai.css
│ │ │ │ ├── neat.css
│ │ │ │ ├── neo.css
│ │ │ │ ├── night.css
│ │ │ │ ├── panda-syntax.css
│ │ │ │ ├── paraiso-dark.css
│ │ │ │ ├── paraiso-light.css
│ │ │ │ ├── pastel-on-dark.css
│ │ │ │ ├── railscasts.css
│ │ │ │ ├── rubyblue.css
│ │ │ │ ├── seti.css
│ │ │ │ ├── solarized.css
│ │ │ │ ├── the-matrix.css
│ │ │ │ ├── tomorrow-night-bright.css
│ │ │ │ ├── tomorrow-night-eighties.css
│ │ │ │ ├── ttcn.css
│ │ │ │ ├── twilight.css
│ │ │ │ ├── vibrant-ink.css
│ │ │ │ ├── xq-dark.css
│ │ │ │ ├── xq-light.css
│ │ │ │ ├── yeti.css
│ │ │ │ └── zenburn.css
│ │ │ ├── github.css
│ │ │ ├── intercept.js
│ │ │ ├── polyfills.js
│ │ │ ├── source-editor.css
│ │ │ ├── source-editor.html
│ │ │ └── source-editor.js
│ │ ├── java/
│ │ │ └── com/
│ │ │ └── github/
│ │ │ └── pockethub/
│ │ │ └── android/
│ │ │ ├── ApplicationComponent.java
│ │ │ ├── ApplicationModule.kt
│ │ │ ├── GitHubModule.java
│ │ │ ├── Intents.java
│ │ │ ├── PocketHub.java
│ │ │ ├── PocketHubModule.java
│ │ │ ├── RequestCodes.java
│ │ │ ├── RequestReader.java
│ │ │ ├── RequestWriter.java
│ │ │ ├── ResultCodes.java
│ │ │ ├── accounts/
│ │ │ │ ├── AccountAuthenticator.java
│ │ │ │ ├── AccountAuthenticatorService.java
│ │ │ │ ├── AccountUtils.java
│ │ │ │ ├── AccountsHelper.java
│ │ │ │ ├── LoginActivity.java
│ │ │ │ └── LoginWebViewActivity.java
│ │ │ ├── core/
│ │ │ │ ├── GitHubRequest.kt
│ │ │ │ ├── ItemStore.java
│ │ │ │ ├── OnLoadListener.java
│ │ │ │ ├── code/
│ │ │ │ │ ├── FullTree.java
│ │ │ │ │ └── RefreshTreeTask.java
│ │ │ │ ├── commit/
│ │ │ │ │ ├── CommitMatch.kt
│ │ │ │ │ ├── CommitStore.java
│ │ │ │ │ ├── CommitUriMatcher.java
│ │ │ │ │ ├── CommitUtils.kt
│ │ │ │ │ ├── FullCommit.java
│ │ │ │ │ ├── FullCommitFile.java
│ │ │ │ │ └── RefreshCommitTask.java
│ │ │ │ ├── gist/
│ │ │ │ │ ├── FullGist.kt
│ │ │ │ │ ├── GistEventMatcher.java
│ │ │ │ │ ├── GistStore.java
│ │ │ │ │ ├── GistUriMatcher.java
│ │ │ │ │ └── RefreshGistTask.java
│ │ │ │ ├── issue/
│ │ │ │ │ ├── FullIssue.kt
│ │ │ │ │ ├── IssueEventMatcher.java
│ │ │ │ │ ├── IssueFilter.java
│ │ │ │ │ ├── IssueStore.java
│ │ │ │ │ ├── IssueUriMatcher.java
│ │ │ │ │ ├── IssueUtils.java
│ │ │ │ │ └── RefreshIssueTask.java
│ │ │ │ ├── ref/
│ │ │ │ │ └── RefUtils.java
│ │ │ │ ├── repo/
│ │ │ │ │ ├── RepositoryEventMatcher.java
│ │ │ │ │ ├── RepositoryUriMatcher.java
│ │ │ │ │ └── RepositoryUtils.kt
│ │ │ │ └── user/
│ │ │ │ ├── UserComparator.java
│ │ │ │ ├── UserEventMatcher.java
│ │ │ │ └── UserUriMatcher.java
│ │ │ ├── dagger/
│ │ │ │ ├── ActivityBuilder.java
│ │ │ │ ├── ActivityScope.java
│ │ │ │ ├── CommitCompareViewFragmentProvider.java
│ │ │ │ ├── CommitViewFragmentProvider.java
│ │ │ │ ├── CreateCommentFragmentProvider.java
│ │ │ │ ├── DialogFragmentBuilder.java
│ │ │ │ ├── FiltersViewFragmentProvider.java
│ │ │ │ ├── GistFilesViewFragmentProvider.java
│ │ │ │ ├── GistsPagerFragmentProvider.java
│ │ │ │ ├── GistsViewFragmentProvider.java
│ │ │ │ ├── HomePagerFragmentProvider.java
│ │ │ │ ├── IssueBrowseFragmentProvider.java
│ │ │ │ ├── IssueDashboardPagerFragmentProvider.java
│ │ │ │ ├── IssueSearchFragmentProvider.java
│ │ │ │ ├── IssuesViewFragmentProvider.java
│ │ │ │ ├── MainFragmentProvider.java
│ │ │ │ ├── NotificationFragmentProvider.java
│ │ │ │ ├── RepositoryContributorsFragmentProvider.java
│ │ │ │ ├── RepositoryViewFragmentProvider.java
│ │ │ │ ├── SearchActivityFragmentProvider.java
│ │ │ │ ├── ServiceBuilder.java
│ │ │ │ └── UserViewFragmentProvider.java
│ │ │ ├── markwon/
│ │ │ │ ├── AlignHandler.java
│ │ │ │ ├── AsyncDrawableSchedulerPlugin.java
│ │ │ │ ├── FontResolver.java
│ │ │ │ ├── GifAwareGlideStore.java
│ │ │ │ ├── MarkwonUtils.java
│ │ │ │ ├── SpanLinkPlugin.java
│ │ │ │ ├── SvgDecoder.java
│ │ │ │ ├── SvgDrawableTranscoder.java
│ │ │ │ └── SvgModule.java
│ │ │ ├── persistence/
│ │ │ │ ├── AccountDataManager.java
│ │ │ │ ├── DatabaseCache.kt
│ │ │ │ ├── OrganizationRepositories.kt
│ │ │ │ ├── OrganizationRepositoriesFactory.java
│ │ │ │ ├── Organizations.kt
│ │ │ │ └── PersistableResource.java
│ │ │ ├── rx/
│ │ │ │ ├── AutoDisposeUtils.java
│ │ │ │ └── RxProgress.java
│ │ │ ├── sync/
│ │ │ │ ├── ContentProviderAdapter.java
│ │ │ │ ├── SyncAdapter.java
│ │ │ │ ├── SyncAdapterService.java
│ │ │ │ └── SyncCampaign.java
│ │ │ ├── ui/
│ │ │ │ ├── ConfirmDialogFragment.java
│ │ │ │ ├── DialogResultListener.java
│ │ │ │ ├── FragmentProvider.java
│ │ │ │ ├── MainActivity.kt
│ │ │ │ ├── NewsFragment.kt
│ │ │ │ ├── SingleChoiceDialogFragment.java
│ │ │ │ ├── TextWatcherAdapter.java
│ │ │ │ ├── ViewPager.java
│ │ │ │ ├── WebView.java
│ │ │ │ ├── base/
│ │ │ │ │ ├── AccountAuthenticatorAppCompatActivity.java
│ │ │ │ │ ├── BaseActivity.kt
│ │ │ │ │ ├── BaseFragment.kt
│ │ │ │ │ ├── DialogFragmentHelper.java
│ │ │ │ │ ├── FragmentPagerAdapter.java
│ │ │ │ │ └── FragmentStatePagerAdapter.java
│ │ │ │ ├── code/
│ │ │ │ │ └── RepositoryCodeFragment.kt
│ │ │ │ ├── comment/
│ │ │ │ │ ├── CommentPreviewPagerAdapter.java
│ │ │ │ │ ├── CreateCommentActivity.kt
│ │ │ │ │ ├── DeleteCommentListener.java
│ │ │ │ │ ├── EditCommentListener.java
│ │ │ │ │ ├── RawCommentFragment.kt
│ │ │ │ │ └── RenderedCommentFragment.kt
│ │ │ │ ├── commit/
│ │ │ │ │ ├── CommitCompareListFragment.kt
│ │ │ │ │ ├── CommitCompareViewActivity.java
│ │ │ │ │ ├── CommitDiffListFragment.kt
│ │ │ │ │ ├── CommitFileComparator.java
│ │ │ │ │ ├── CommitFileViewActivity.kt
│ │ │ │ │ ├── CommitListFragment.kt
│ │ │ │ │ ├── CommitPagerAdapter.java
│ │ │ │ │ ├── CommitViewActivity.kt
│ │ │ │ │ ├── CreateCommentActivity.java
│ │ │ │ │ └── DiffStyler.java
│ │ │ │ ├── gist/
│ │ │ │ │ ├── CreateCommentActivity.java
│ │ │ │ │ ├── CreateGistActivity.kt
│ │ │ │ │ ├── EditCommentActivity.java
│ │ │ │ │ ├── GistFileFragment.kt
│ │ │ │ │ ├── GistFilesPagerAdapter.java
│ │ │ │ │ ├── GistFilesViewActivity.kt
│ │ │ │ │ ├── GistFragment.kt
│ │ │ │ │ ├── GistQueriesPagerAdapter.java
│ │ │ │ │ ├── GistsFragment.kt
│ │ │ │ │ ├── GistsPagerAdapter.java
│ │ │ │ │ ├── GistsPagerFragment.kt
│ │ │ │ │ ├── GistsViewActivity.kt
│ │ │ │ │ ├── MyGistsFragment.java
│ │ │ │ │ ├── PublicGistsFragment.java
│ │ │ │ │ └── StarredGistsFragment.java
│ │ │ │ ├── helpers/
│ │ │ │ │ ├── ItemListHandler.kt
│ │ │ │ │ ├── ListFetcher.kt
│ │ │ │ │ ├── PagedListFetcher.kt
│ │ │ │ │ ├── PagedScrollListener.kt
│ │ │ │ │ ├── PagerHandler.kt
│ │ │ │ │ └── ResourceLoadingIndicator.kt
│ │ │ │ ├── issue/
│ │ │ │ │ ├── AssigneeDialog.java
│ │ │ │ │ ├── AssigneeDialogFragment.java
│ │ │ │ │ ├── CreateCommentActivity.java
│ │ │ │ │ ├── DashboardIssueFragment.kt
│ │ │ │ │ ├── EditAssigneeTask.java
│ │ │ │ │ ├── EditCommentActivity.java
│ │ │ │ │ ├── EditIssueActivity.kt
│ │ │ │ │ ├── EditIssuesFilterActivity.kt
│ │ │ │ │ ├── EditLabelsTask.java
│ │ │ │ │ ├── EditMilestoneTask.java
│ │ │ │ │ ├── EditStateTask.java
│ │ │ │ │ ├── FilterListFragment.kt
│ │ │ │ │ ├── FiltersViewActivity.java
│ │ │ │ │ ├── IssueBrowseActivity.java
│ │ │ │ │ ├── IssueDashboardPagerAdapter.java
│ │ │ │ │ ├── IssueDashboardPagerFragment.kt
│ │ │ │ │ ├── IssueFragment.kt
│ │ │ │ │ ├── IssueSearchActivity.java
│ │ │ │ │ ├── IssueSearchSuggestionsProvider.java
│ │ │ │ │ ├── IssuesFragment.kt
│ │ │ │ │ ├── IssuesPagerAdapter.java
│ │ │ │ │ ├── IssuesViewActivity.kt
│ │ │ │ │ ├── LabelDrawableSpan.kt
│ │ │ │ │ ├── LabelsDialog.java
│ │ │ │ │ ├── LabelsDialogFragment.java
│ │ │ │ │ ├── MilestoneDialog.java
│ │ │ │ │ ├── MilestoneDialogFragment.kt
│ │ │ │ │ └── SearchIssueListFragment.kt
│ │ │ │ ├── item/
│ │ │ │ │ ├── ContributorItem.kt
│ │ │ │ │ ├── GitHubCommentItem.kt
│ │ │ │ │ ├── LoadingItem.kt
│ │ │ │ │ ├── TextItem.kt
│ │ │ │ │ ├── UserItem.kt
│ │ │ │ │ ├── code/
│ │ │ │ │ │ ├── BlobItem.kt
│ │ │ │ │ │ ├── FolderItem.kt
│ │ │ │ │ │ └── PathHeaderItem.kt
│ │ │ │ │ ├── commit/
│ │ │ │ │ │ ├── CommitCommentItem.kt
│ │ │ │ │ │ ├── CommitFileHeaderItem.kt
│ │ │ │ │ │ ├── CommitFileLineItem.kt
│ │ │ │ │ │ ├── CommitHeaderItem.kt
│ │ │ │ │ │ ├── CommitItem.kt
│ │ │ │ │ │ └── CommitParentItem.kt
│ │ │ │ │ ├── dialog/
│ │ │ │ │ │ ├── AssigneeDialogItem.kt
│ │ │ │ │ │ ├── LabelDialogItem.kt
│ │ │ │ │ │ ├── MilestoneDialogItem.kt
│ │ │ │ │ │ └── RefDialogItem.kt
│ │ │ │ │ ├── gist/
│ │ │ │ │ │ ├── GistFileItem.kt
│ │ │ │ │ │ ├── GistHeaderItem.kt
│ │ │ │ │ │ └── GistItem.kt
│ │ │ │ │ ├── issue/
│ │ │ │ │ │ ├── IssueDashboardItem.kt
│ │ │ │ │ │ ├── IssueEventItem.kt
│ │ │ │ │ │ ├── IssueFilterHeaderItem.kt
│ │ │ │ │ │ ├── IssueFilterItem.kt
│ │ │ │ │ │ ├── IssueHeaderItem.kt
│ │ │ │ │ │ └── IssueItem.kt
│ │ │ │ │ ├── news/
│ │ │ │ │ │ ├── CommitCommentEventItem.kt
│ │ │ │ │ │ ├── CreateEventItem.kt
│ │ │ │ │ │ ├── DeleteEventItem.kt
│ │ │ │ │ │ ├── FollowEventItem.kt
│ │ │ │ │ │ ├── ForkEventItem.kt
│ │ │ │ │ │ ├── GistEventItem.kt
│ │ │ │ │ │ ├── GollumEventItem.kt
│ │ │ │ │ │ ├── IssueCommentEventItem.kt
│ │ │ │ │ │ ├── IssuesEventItem.kt
│ │ │ │ │ │ ├── MemberEventItem.kt
│ │ │ │ │ │ ├── NewsItem.kt
│ │ │ │ │ │ ├── PublicEventItem.kt
│ │ │ │ │ │ ├── PullRequestEventItem.kt
│ │ │ │ │ │ ├── PullRequestReviewCommentEventItem.kt
│ │ │ │ │ │ ├── PushEventItem.kt
│ │ │ │ │ │ ├── ReleaseEventItem.kt
│ │ │ │ │ │ ├── TeamAddEventItem.kt
│ │ │ │ │ │ └── WatchEventItem.kt
│ │ │ │ │ ├── notification/
│ │ │ │ │ │ ├── NotificationHeaderItem.kt
│ │ │ │ │ │ └── NotificationItem.kt
│ │ │ │ │ └── repository/
│ │ │ │ │ ├── RepositoryHeaderItem.kt
│ │ │ │ │ └── RepositoryItem.kt
│ │ │ │ ├── notification/
│ │ │ │ │ ├── NotificationActivity.kt
│ │ │ │ │ ├── NotificationListFragment.kt
│ │ │ │ │ ├── NotificationPagerAdapter.java
│ │ │ │ │ └── NotificationReadListener.java
│ │ │ │ ├── ref/
│ │ │ │ │ ├── BranchFileViewActivity.kt
│ │ │ │ │ ├── RefDialog.java
│ │ │ │ │ └── RefDialogFragment.java
│ │ │ │ ├── repo/
│ │ │ │ │ ├── RecentRepositories.java
│ │ │ │ │ ├── RepositoryContributorsActivity.java
│ │ │ │ │ ├── RepositoryContributorsFragment.kt
│ │ │ │ │ ├── RepositoryListFragment.kt
│ │ │ │ │ ├── RepositoryNewsFragment.java
│ │ │ │ │ ├── RepositoryPagerAdapter.java
│ │ │ │ │ ├── RepositoryReadmeFragment.kt
│ │ │ │ │ ├── RepositoryViewActivity.kt
│ │ │ │ │ └── UserRepositoryListFragment.kt
│ │ │ │ ├── search/
│ │ │ │ │ ├── RepositorySearchSuggestionsProvider.java
│ │ │ │ │ ├── SearchActivity.kt
│ │ │ │ │ ├── SearchPagerAdapter.java
│ │ │ │ │ ├── SearchRepositoryListFragment.kt
│ │ │ │ │ └── SearchUserListFragment.kt
│ │ │ │ ├── user/
│ │ │ │ │ ├── FollowersFragment.kt
│ │ │ │ │ ├── FollowingFragment.kt
│ │ │ │ │ ├── HomePagerAdapter.kt
│ │ │ │ │ ├── HomePagerFragment.kt
│ │ │ │ │ ├── MembersFragment.kt
│ │ │ │ │ ├── MyFollowersFragment.java
│ │ │ │ │ ├── MyFollowingFragment.java
│ │ │ │ │ ├── OrganizationNewsFragment.java
│ │ │ │ │ ├── OrganizationSelectionListener.java
│ │ │ │ │ ├── OrganizationSelectionProvider.java
│ │ │ │ │ ├── PagedUserFragment.kt
│ │ │ │ │ ├── UriLauncherActivity.java
│ │ │ │ │ ├── UserCreatedNewsFragment.java
│ │ │ │ │ ├── UserFollowersFragment.java
│ │ │ │ │ ├── UserFollowingFragment.java
│ │ │ │ │ ├── UserNewsFragment.java
│ │ │ │ │ ├── UserPagerAdapter.java
│ │ │ │ │ ├── UserReceivedNewsFragment.java
│ │ │ │ │ └── UserViewActivity.kt
│ │ │ │ └── view/
│ │ │ │ ├── LinkTextView.kt
│ │ │ │ └── OcticonTextView.java
│ │ │ └── util/
│ │ │ ├── AvatarLoader.kt
│ │ │ ├── ConvertUtils.java
│ │ │ ├── GravatarUtils.java
│ │ │ ├── HtmlUtils.java
│ │ │ ├── HttpImageGetter.java
│ │ │ ├── ImageBinPoster.kt
│ │ │ ├── ImageUtils.java
│ │ │ ├── InfoUtils.java
│ │ │ ├── MarkdownLoader.java
│ │ │ ├── MarkdownUtils.java
│ │ │ ├── PermissionsUtils.java
│ │ │ ├── PreferenceUtils.java
│ │ │ ├── RxPageUtil.java
│ │ │ ├── ServiceUtils.java
│ │ │ ├── ShareUtils.java
│ │ │ ├── SourceEditor.java
│ │ │ ├── TimeUtils.java
│ │ │ ├── ToastUtils.java
│ │ │ └── android/
│ │ │ └── text/
│ │ │ └── SpannableStringBuilder.kt
│ │ ├── res/
│ │ │ ├── color/
│ │ │ │ └── color_navigation_view_icon.xml
│ │ │ ├── drawable/
│ │ │ │ ├── actionbar_spinner.xml
│ │ │ │ ├── diff_add_background.xml
│ │ │ │ ├── diff_marker_background.xml
│ │ │ │ ├── diff_remove_background.xml
│ │ │ │ ├── edit_text_background.xml
│ │ │ │ ├── edit_text_cursor.xml
│ │ │ │ ├── footer_selector.xml
│ │ │ │ ├── ic_add_a_photo.xml
│ │ │ │ ├── ic_notifications_black.xml
│ │ │ │ ├── ic_search_white_24dp.xml
│ │ │ │ ├── inset_background.xml
│ │ │ │ ├── label_background.xml
│ │ │ │ ├── list_divider_5dp.xml
│ │ │ │ ├── list_item_background.xml
│ │ │ │ ├── milestone_background.xml
│ │ │ │ ├── milestone_closed_background.xml
│ │ │ │ ├── section_background.xml
│ │ │ │ ├── section_selected_background.xml
│ │ │ │ └── section_selector.xml
│ │ │ ├── layout/
│ │ │ │ ├── activity_commit_file_view.xml
│ │ │ │ ├── activity_gist_create.xml
│ │ │ │ ├── activity_issue_edit.xml
│ │ │ │ ├── activity_issue_search.xml
│ │ │ │ ├── activity_issues_filter_edit.xml
│ │ │ │ ├── activity_main.xml
│ │ │ │ ├── activity_pager.xml
│ │ │ │ ├── activity_pager_with_title.xml
│ │ │ │ ├── activity_repo_contributors.xml
│ │ │ │ ├── activity_repo_issue_list.xml
│ │ │ │ ├── adapter_fenced_code_block.xml
│ │ │ │ ├── blob_item.xml
│ │ │ │ ├── collaborator_item.xml
│ │ │ │ ├── comment.xml
│ │ │ │ ├── comment_event.xml
│ │ │ │ ├── comment_event_item.xml
│ │ │ │ ├── comment_item.xml
│ │ │ │ ├── commit_comment_item.xml
│ │ │ │ ├── commit_compare.xml
│ │ │ │ ├── commit_compare_file_details_header.xml
│ │ │ │ ├── commit_details_header.xml
│ │ │ │ ├── commit_diff_file_header.xml
│ │ │ │ ├── commit_diff_line.xml
│ │ │ │ ├── commit_file_details_header.xml
│ │ │ │ ├── commit_header.xml
│ │ │ │ ├── commit_item.xml
│ │ │ │ ├── commit_parent_item.xml
│ │ │ │ ├── contributor_item.xml
│ │ │ │ ├── dashboard_issue_item.xml
│ │ │ │ ├── diff_comment_item.xml
│ │ │ │ ├── diff_line_dialog.xml
│ │ │ │ ├── drawer_header.xml
│ │ │ │ ├── folder_item.xml
│ │ │ │ ├── fragment_comment_create.xml
│ │ │ │ ├── fragment_comment_list.xml
│ │ │ │ ├── fragment_comment_preview.xml
│ │ │ │ ├── fragment_commit_diff_list.xml
│ │ │ │ ├── fragment_commit_list.xml
│ │ │ │ ├── fragment_gist_file_view.xml
│ │ │ │ ├── fragment_item_list.xml
│ │ │ │ ├── fragment_repo_code.xml
│ │ │ │ ├── gist_file_item.xml
│ │ │ │ ├── gist_header.xml
│ │ │ │ ├── gist_item.xml
│ │ │ │ ├── issue_details.xml
│ │ │ │ ├── issue_header.xml
│ │ │ │ ├── issue_number.xml
│ │ │ │ ├── issues_filter_details.xml
│ │ │ │ ├── issues_filter_header.xml
│ │ │ │ ├── issues_filter_item.xml
│ │ │ │ ├── issues_filter_list.xml
│ │ │ │ ├── label_item.xml
│ │ │ │ ├── loading_item.xml
│ │ │ │ ├── login.xml
│ │ │ │ ├── markwon_adapter.xml
│ │ │ │ ├── markwon_adapter_test.xml
│ │ │ │ ├── markwon_table_block.xml
│ │ │ │ ├── markwon_table_cell.xml
│ │ │ │ ├── milestone.xml
│ │ │ │ ├── milestone_item.xml
│ │ │ │ ├── news_item.xml
│ │ │ │ ├── notification_item.xml
│ │ │ │ ├── notification_item_header.xml
│ │ │ │ ├── pager_with_tabs.xml
│ │ │ │ ├── path_item.xml
│ │ │ │ ├── ref_footer.xml
│ │ │ │ ├── ref_item.xml
│ │ │ │ ├── repo_details.xml
│ │ │ │ ├── repo_dialog.xml
│ │ │ │ ├── repo_header_item.xml
│ │ │ │ ├── repo_issue_item.xml
│ │ │ │ ├── tabbed_progress_pager.xml
│ │ │ │ ├── user_item.xml
│ │ │ │ └── user_repo_item.xml
│ │ │ ├── menu/
│ │ │ │ ├── activity_comment.xml
│ │ │ │ ├── activity_create_gist.xml
│ │ │ │ ├── activity_file_view.xml
│ │ │ │ ├── activity_issue_edit.xml
│ │ │ │ ├── activity_issue_filter.xml
│ │ │ │ ├── activity_login.xml
│ │ │ │ ├── activity_main.xml
│ │ │ │ ├── activity_repository.xml
│ │ │ │ ├── activity_search.xml
│ │ │ │ ├── activity_user_follow.xml
│ │ │ │ ├── fragment_code_view.xml
│ │ │ │ ├── fragment_commit_view.xml
│ │ │ │ ├── fragment_gist_view.xml
│ │ │ │ ├── fragment_gists.xml
│ │ │ │ ├── fragment_issue_view.xml
│ │ │ │ ├── fragment_issues.xml
│ │ │ │ ├── fragment_refresh.xml
│ │ │ │ └── navigation.xml
│ │ │ ├── values/
│ │ │ │ ├── colors.xml
│ │ │ │ ├── dimens.xml
│ │ │ │ ├── strings.xml
│ │ │ │ ├── styles.xml
│ │ │ │ ├── theme.xml
│ │ │ │ └── typeface.xml
│ │ │ ├── values-bg/
│ │ │ │ └── strings.xml
│ │ │ ├── values-cs/
│ │ │ │ └── strings.xml
│ │ │ ├── values-de/
│ │ │ │ └── strings.xml
│ │ │ ├── values-el/
│ │ │ │ └── strings.xml
│ │ │ ├── values-es/
│ │ │ │ └── strings.xml
│ │ │ ├── values-fr/
│ │ │ │ └── strings.xml
│ │ │ ├── values-hu/
│ │ │ │ └── strings.xml
│ │ │ ├── values-is/
│ │ │ │ └── strings.xml
│ │ │ ├── values-it/
│ │ │ │ └── strings.xml
│ │ │ ├── values-iw/
│ │ │ │ └── strings.xml
│ │ │ ├── values-ja/
│ │ │ │ └── strings.xml
│ │ │ ├── values-ko/
│ │ │ │ └── strings.xml
│ │ │ ├── values-no/
│ │ │ │ └── strings.xml
│ │ │ ├── values-pl/
│ │ │ │ └── strings.xml
│ │ │ ├── values-pt/
│ │ │ │ └── strings.xml
│ │ │ ├── values-ro/
│ │ │ │ └── strings.xml
│ │ │ ├── values-ru/
│ │ │ │ └── strings.xml
│ │ │ ├── values-sk/
│ │ │ │ └── strings.xml
│ │ │ ├── values-sv/
│ │ │ │ └── strings.xml
│ │ │ ├── values-tr/
│ │ │ │ └── strings.xml
│ │ │ ├── values-uk/
│ │ │ │ └── strings.xml
│ │ │ ├── values-v21/
│ │ │ │ └── dimens.xml
│ │ │ ├── values-v23/
│ │ │ │ └── styles.xml
│ │ │ ├── values-zh-rCN/
│ │ │ │ └── strings.xml
│ │ │ ├── values-zh-rTW/
│ │ │ │ └── strings.xml
│ │ │ └── xml/
│ │ │ ├── authenticator.xml
│ │ │ ├── searchable_issues.xml
│ │ │ ├── searchable_repos_users.xml
│ │ │ └── sync_adapter.xml
│ │ └── sqldelight/
│ │ └── com.github.pockethub.android/
│ │ ├── 10.sqm
│ │ ├── 11.sqm
│ │ ├── 12.sqm
│ │ ├── 9.sqm
│ │ ├── issue_filter.sq
│ │ ├── organizations.sq
│ │ └── repositories.sq
│ └── test/
│ └── java/
│ └── com/
│ └── github/
│ └── pockethub/
│ └── android/
│ ├── AccountManagerShadow.java
│ ├── ui/
│ │ └── MainActivityTest.java
│ └── util/
│ └── ConvertUtilsTest.java
├── build.gradle
├── gradle/
│ └── wrapper/
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradle.properties
├── gradlew
├── gradlew.bat
├── proguard.cfg
├── script/
│ └── style/
│ └── checkstyle.xml
└── settings.gradle
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitattributes
================================================
# Set default behaviour, in case users don't have core.autocrlf set.
* text=auto
================================================
FILE: .gitignore
================================================
*/target
target
tmp
*~
bin
*/test-output
temp-testng-customsuite.xml
**pom.xml.releaseBackup
release.properties
gen
*/seed.txt
notes
logs
gen-external-apklibs
.idea
*.iml
.DS_Store
*.swp
out
.gradle
/local.properties
/build
###OSX###
.DS_Store
.AppleDouble
.LSOverride
# Icon must ends with two \r.
Icon
# Thumbnails
._*
# Files that might appear on external disk
.Spotlight-V100
.Trashes
###Linux###
*~
# KDE directory preferences
.directory
###Android###
# Built application files
*.apk
*.ap_
# Files for ART and Dalvik VM
*.dex
# Java class files
*.class
# Generated files
bin/
gen/
# Gradle files
.gradle/
.gradletasknamecache
build/
# Local configuration file (sdk path, etc)
local.properties
# Proguard folder generated by Eclipse
proguard/
# Lint
lint-report.html
lint-report_files/
lint_result.txt
# Mobile Tools for Java (J2ME)
.mtj.tmp/
# Package Files #
*.war
*.ear
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
###IntelliJ###
*.iml
*.ipr
*.iws
.idea/
###Eclipse###
*.pydevproject
.metadata
tmp/
*.tmp
*.bak
*.swp
*~.nib
.settings/
.loadpath
# External tool builders
.externalToolBuilders/
# Locally stored "Eclipse launch configurations"
*.launch
# CDT-specific
.cproject
# PDT-specific
.buildpath
# sbteclipse plugin
.target
# TeXlipse plugin
.texlipse
#GitHub application codes (local and personal)
github.properties
================================================
FILE: .travis.yml
================================================
language: android
android:
components:
- tools
- tools #Running this twice get's the latest build tools (https://github.com/codepath/android_guides/wiki/Setting-up-Travis-CI)
- platform-tools
- android-28
- build-tools-28.0.3
- extra
licenses:
- 'android-sdk-license-.+'
jdk: oraclejdk8
notifications:
email: false
sudo: required #The build runs out of memory and is killed if we use the container system
before_install:
- yes | sdkmanager "platforms;android-28"
script:
- ./gradlew clean build
- ./gradlew test
================================================
FILE: CONTRIBUTING.md
================================================
Contributing
============
## Reporting issues
* IMPORTANT: Any issues reported regarding the old Play Store version of the original GitHub app will be closed without investigation. Please only report issues regarding the current repo version (i.e. you must confirm this issue exists in the latest master). This is a different app now, and many old issues with the original app (such as 2FA) were resolved in master but not released.
* Make sure there's not already an issue (open or closed) regarding your issue.
* Include detailed information and steps to reproduce. Any issues opened with no description will be ignored.
* Include a screenshot(s) of the issue. Brownie points for a screen recording of the issue.
## ALL pull requests
Please include a descriptive title and description. If you changed anything with the UI, please include screenshots of how
it looks. Use descriptive messages for your commits, and be sure to explain the *why* for commits where appropriate.
Please **don't** squash all your commits into one before opening the PR. Commits are easier to review when they're split up and in the
order they happened. Of course, do squash smaller commits together as needed to ensure a clean history.
If you open a pull request, you are responsible for engaging with us in the review and discussion afterward. If you don't respond
to comments after opening, we will probably just close it.
## Translations
Always welcome, but please be prepared to have someone else that speaks if available to review it. Chances are that we cannot
review it ourselves, for obvious reasons.
## Bugfixes for existing issues
Always welcome. Please reference the issue number you're addressing in the PR, and let us know in the issue tracker if
you're working on it.
## New features, UI changes, and infrastructure changes
Please make sure you discuss these with us in the issue tracker before opening a pull request. It's good to get a conversation
going first to make sure that everyone is on the same page, and this way you don't accidentally invest a lot of time into
something we don't want to merge. That said, we're always open to these, so please don't hesitate to start the discussion!
================================================
FILE: ISSUE_TEMPLATE.md
================================================
## If the issues at hand is a BUG, please follow this template. Otherwise feel free to ignore it.
## Description
A concise description of what the problem is.
### Versions and device
What version of the app does this happen on?\
Was the version downloaded from the Play Store?\
What version of Android does it happen on?\
What model of phone does it happen on?
## Steps to Reproduce
1. Step by step instructions on how to reproduce this bug.
2. The more detailed your list of instructions, the easier it is for the developer to track down the problem!
### Actual behaviour
Describe what happens when you perform the steps above.
### Expected behaviour
Describe what you expected to happen when performing the steps above.
## Logs
Please include any relevant log output that might assist in tracking down the problem.
================================================
FILE: LICENSE
================================================
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
================================================
FILE: README.md
================================================
# PocketHub [](https://travis-ci.org/pockethub/PocketHub) <a style="margin-bottom: 0;" href='https://play.google.com/store/apps/details?id=com.github.pockethub.android&utm_source=global_co&utm_medium=prtnr&utm_content=Mar2515&utm_campaign=PartBadge&pcampaignid=MKT-Other-global-all-co-prtnr-py-PartBadge-Mar2515-1'><img alt='Get it on Google Play' src='https://play.google.com/intl/en_us/badges/images/generic/en_badge_web_generic.png' height="80px"/></a>
This repository contains the source code for the PocketHub Android app.
This is the *same* repository as the now-defunct official GitHub Android app.
## What's going on here?
> What happened to the old app?
GitHub didn't want to maintain the app anymore, so it's been released to the community and maintained as a public project.
We are actively working towards a re-release to the Play Store, and this app will be the spiritual successor to the original GitHub app.
> What's PocketHub?
A name we decided that sounded good. We're a team of a few people helping organizing and prepare this.
> What about the other forks out there?
They'll remain forks. Obviously we'd prefer them to focus on improving this project, but otherwise we're not coordinating anything with them.
> What's the immediate plan?
We're shooting for an initial re-release just to get the app out there. There have been a significant number of changes since the app was last updated, with many functional and design changes that we need to make sure are good to go.
> What's the less-immediate plan?
After the initial release, we'll start working on giving this app a proper refresh. Much of the UI has already been touched up with elements of Material Design, but we have a long ways to go. Android has changed a lot since this was actively developed, and it's time we take advantage of those changes.
> How can I help?
Please see the [issues](https://github.com/pockethub/PocketHub/issues) section to report any bugs or feature requests and to see the list of known issues. We can't promise fast response times since we all have full time jobs of our own, but we will do our best to respond in a timely fashion. If you'd like to contribute, please fork this repository and contribute back using [pull requests](https://github.com/pockethub/PocketHub/pulls).
Any contributions, large or small, major features, bug fixes, additional language translations, unit/integration tests are welcomed and appreciated but will be thoroughly reviewed and discussed. **Please read [CONTRIBUTING.md](https://github.com/pockethub/PocketHub/blob/master/CONTRIBUTING.md) first!**
## Setup Environment
1. Create a GitHub application (https://github.com/settings/applications/new)
2. Set the following gradle properties via one of the ways described [here](https://docs.gradle.org/current/userguide/build_environment.html#sec:gradle_properties_and_system_properties):
- `pockethub_github_client`=your_application_client_id
- `pockethub_github_secret`=your_application_client_secret
- `pockethub_github_callback`=your_callback_url
### Callback URL
- The callback URL needs to be in the format `your_schema://whatever_you_want`
- Use a custom schema like `myawesomeschema` (not `http` or `https`)
- The schema must be lowercase ([Reference](https://developer.android.com/guide/topics/manifest/data-element.html))
## Legacy Notes
If you had a current installation of the Github App installed and then enabled 2FA (2 Factor Authentication), then you must delete the Personal Access Token (PAT) from your configuration (via the web interface). A thanks to @landstander668 for posting this workaround.
## License
* [Apache Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.html)
================================================
FILE: app/build.gradle
================================================
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'
apply plugin: 'com.github.ben-manes.versions' // ./gradlew dependencyUpdates -Drevision=release
apply plugin: 'com.squareup.sqldelight'
//apply from: 'quality.gradle'
repositories {
flatDir {
dirs 'libs'
}
}
// Manifest version information!
def versionMajor = 0
def versionMinor = 5
def versionPatch = 1
def versionBuild = 0 // bump for dogfood builds, public betas, etc.
def isTravis = "true".equals(System.getenv("TRAVIS"))
def preDexEnabled = "true".equals(System.getProperty("pre-dex", "true"))
def clientIdIsNotSet = true;
def clientSecretIsNotSet = true;
def addConfigValues = { name, isDebug, suffix = "" ->
def value = (isDebug ? "com.github.debug" : "com.github") + suffix
android.defaultConfig.buildConfigField "String", name, "\"${value}\""
android.defaultConfig.resValue "string", name.toLowerCase(), value
}
sqldelight {
Database {
packageName = "com.github.pockethub.android"
}
}
android {
compileSdkVersion 28
defaultConfig {
applicationId 'com.github.pockethub.android'
minSdkVersion 19
targetSdkVersion 28
multiDexEnabled true
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
testOptions.unitTests.includeAndroidResources = true
versionCode versionMajor * 10000 + versionMinor * 1000 + versionPatch * 100 + versionBuild
versionName "${versionMajor}.${versionMinor}.${versionPatch}"
vectorDrawables.useSupportLibrary = true
addConfigValues("ACCOUNT_TYPE", false)
addConfigValues("PROVIDER_AUTHORITY_SYNC", false, ".sync")
addConfigValues("PROVIDER_AUTHORITY_SEARCH_SUGGEST_ISSUES", false, ".search.suggest.recent.issues")
addConfigValues("PROVIDER_AUTHORITY_SEARCH_SUGGEST_REPOS", false, ".search.suggest.recent.repos")
if (project.hasProperty('pockethub_github_client')) {
resValue "string", "github_client", pockethub_github_client
clientIdIsNotSet = false
} else {
resValue "string", "github_client", "dummy_client"
}
if (project.hasProperty('pockethub_github_secret')) {
resValue "string", "github_secret", pockethub_github_secret
clientSecretIsNotSet = false
} else {
resValue "string", "github_secret", "dummy_secret"
}
if (clientIdIsNotSet || clientSecretIsNotSet) {
logger.warn("You won't be able to login, because the oauth client or secret isn't set")
logger.warn("Read the README.md: https://github.com/pockethub/PocketHub#setup-environment")
}
if (project.hasProperty('pockethub_bugsnag_api_key')) {
resValue "string", "bugsnag_api_key", pockethub_bugsnag_api_key
} else {
resValue "string", "bugsnag_api_key", "bugsnag-api-key"
}
String oauth = ""
if (project.hasProperty('pockethub_github_callback')) {
oauth = pockethub_github_callback
} else {
oauth = "http://dummy.example.com"
}
resValue "string", "github_oauth", oauth
resValue "string", "github_oauth_scheme", oauth.split("://")[0]
}
buildTypes {
debug {
addConfigValues("ACCOUNT_TYPE", true)
addConfigValues("PROVIDER_AUTHORITY_SYNC", true, ".sync")
addConfigValues("PROVIDER_AUTHORITY_SEARCH_SUGGEST_ISSUES", true, ".search.suggest.recent.issues")
addConfigValues("PROVIDER_AUTHORITY_SEARCH_SUGGEST_REPOS", true, ".search.suggest.recent.repos")
applicationIdSuffix ".debug"
}
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = JavaVersion.VERSION_1_8.toString()
}
testOptions {
animationsDisabled = true
unitTests {
includeAndroidResources = true
}
}
configurations {
implementation.exclude group: 'org.jetbrains', module: 'annotations'
}
packagingOptions {
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/LICENSE'
exclude 'META-INF/NOTICE'
}
lintOptions {
warning 'MissingTranslation'
abortOnError true
check 'NewApi', 'InlinedApi'
fatal 'NewApi', 'InlinedApi'
checkReleaseBuilds true
textReport isTravis
textOutput 'stdout'
htmlReport !isTravis
xmlReport !isTravis
}
dexOptions {
// Skip pre-dexing when running on Travis CI or when disabled via -Dpre-dex=false.
preDexLibraries = preDexEnabled && !isTravis
}
}
androidExtensions {
experimental = true
}
kapt {
correctErrorTypes = true
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'androidx.core:core-ktx:1.2.0'
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.0.0'
implementation 'com.google.android.material:material:1.1.0'
final def markwon_version = '4.3.0'
implementation "io.noties.markwon:core:$markwon_version"
implementation "io.noties.markwon:ext-strikethrough:$markwon_version"
implementation "io.noties.markwon:ext-tasklist:$markwon_version"
implementation "io.noties.markwon:html:$markwon_version"
implementation "io.noties.markwon:image:$markwon_version"
implementation "io.noties.markwon:image-glide:$markwon_version"
implementation "io.noties.markwon:linkify:$markwon_version"
implementation "io.noties.markwon:recycler-table:$markwon_version"
implementation "io.noties.markwon:syntax-highlight:$markwon_version"
implementation "com.caverock:androidsvg:1.4"
implementation "pl.droidsonroids.gif:android-gif-drawable:1.2.19"
implementation 'com.github.bumptech.glide:glide:4.11.0'
implementation "com.github.bumptech.glide:okhttp3-integration:4.11.0"
kapt 'com.github.bumptech.glide:compiler:4.11.0'
kapt 'io.noties:prism4j-bundler:2.0.0'
implementation 'com.squareup.okhttp3:okhttp:3.10.0'
implementation "com.squareup.sqldelight:android-driver:1.2.2"
implementation 'io.reactivex.rxjava2:rxandroid:2.0.2'
implementation 'io.reactivex.rxjava2:rxjava:2.1.10'
implementation 'com.uber.autodispose:autodispose:0.6.1'
implementation 'com.uber.autodispose:autodispose-android-archcomponents:0.6.1'
implementation 'com.bugsnag:bugsnag-android:4.3.1'
implementation 'com.google.dagger:dagger:2.27'
implementation 'com.google.dagger:dagger-android:2.27'
implementation 'com.google.dagger:dagger-android-support:2.27'
kapt 'com.google.dagger:dagger-compiler:2.27'
kapt 'com.google.dagger:dagger-android-processor:2.27'
compileOnly 'com.episode6.hackit.auto.factory:auto-factory-annotations:1.0-beta5'
kapt 'com.google.auto.factory:auto-factory:1.0-beta7'
implementation 'com.github.meisolsson:githubsdk:0.7.0'
implementation "com.squareup.moshi:moshi:1.9.2"
implementation 'com.afollestad.material-dialogs:core:0.9.6.0'
implementation 'com.xwray:groupie:2.3.0'
implementation 'com.xwray:groupie-kotlin-android-extensions:2.3.0'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.1.0'
androidTestImplementation 'com.android.support:support-annotations:28.0.0'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test:rules:1.0.2'
//Libs for testing
testImplementation 'junit:junit:4.12'
testImplementation "org.jetbrains.kotlin:kotlin-test-junit:$kotlin_version"
testImplementation "androidx.test:core:1.2.0"
testImplementation "org.mockito:mockito-core:2.18.3"
testImplementation "org.robolectric:robolectric:4.2.1"
}
================================================
FILE: app/quality.gradle
================================================
apply plugin: 'checkstyle'
check.dependsOn 'checkstyle'
checkstyle {
toolVersion = '7.5.1'
}
task checkstyle(type: Checkstyle) {
configFile file("${project.rootDir}/script/style/checkstyle.xml")
source 'src'
include '**/*.java'
exclude '**/gen/**'
classpath = files()
reports {
html {
enabled true
destination "$project.buildDir/reports/checkstyle/checkstyle.html"
}
}
}
================================================
FILE: app/src/androidTest/AndroidManifest.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.github.pockethub.android.tests"
android:versionCode="100"
android:versionName="1.0" >
<application>
<uses-library android:name="android.test.runner" />
</application>
</manifest>
================================================
FILE: app/src/androidTest/java/com/github/pockethub/android/tests/NewsEventTextTest.java
================================================
/*
* Copyright (c) 2015 PocketHub
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.github.pockethub.android.tests;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.TextView;
import androidx.test.annotation.UiThreadTest;
import androidx.test.filters.SmallTest;
import androidx.test.runner.AndroidJUnit4;
import com.github.pockethub.android.R;
import com.github.pockethub.android.ui.item.news.NewsItem;
import com.github.pockethub.android.util.AvatarLoader;
import com.meisolsson.githubsdk.model.*;
import com.meisolsson.githubsdk.model.payload.*;
import com.xwray.groupie.ViewHolder;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import java.util.Collections;
import java.util.Date;
import static androidx.test.InstrumentationRegistry.getInstrumentation;
import static junit.framework.Assert.assertNotNull;
import static org.junit.Assert.assertEquals;
/**
* Tests of the news text rendering
*/
@RunWith(AndroidJUnit4.class)
@SmallTest
public class NewsEventTextTest {
private TextView text;
private User actor;
private GitHubEvent.RepoIdentifier repo;
private AvatarLoader avatarLoader;
private LayoutInflater layoutInflater;
@Before
public void setUp() {
actor = User.builder().login("user").build();
repo = GitHubEvent.RepoIdentifier.builder()
.repoWithUserName("user/repo")
.build();
Context context = getInstrumentation().getTargetContext();
avatarLoader = new AvatarLoader(context);
layoutInflater = LayoutInflater.from(context);
}
private GitHubEvent createEvent(GitHubEventType type, GitHubPayload payload) {
return GitHubEvent.builder()
.id("test")
.createdAt(new Date())
.type(type)
.payload(payload)
.actor(actor)
.repo(repo)
.build();
}
private void verify(String expected) {
CharSequence actual = text.getText();
assertNotNull(actual);
assertEquals(expected, actual.toString());
}
private void updateView(GitHubEvent event) {
NewsItem item = NewsItem.createNewsItem(avatarLoader, event);
View itemView = layoutInflater.inflate(item.getLayout(), null);
ViewHolder viewHolder = item.createViewHolder(itemView);
item.bind((com.xwray.groupie.kotlinandroidextensions.ViewHolder) viewHolder, 0);
text = viewHolder.itemView.findViewById(R.id.tv_event);
assertNotNull(text);
}
/**
* Verify text of commit comment event
*/
@Test
@UiThreadTest
public void testCommitCommentEvent() {
GitHubEvent event = createEvent(GitHubEventType.CommitCommentEvent,
CommitCommentPayload.builder().build());
updateView(event);
verify("user commented on user/repo");
}
/**
* Verify text of create event
*/
@Test
@UiThreadTest
public void testCreateRepositoryEvent() {
CreatePayload payload = CreatePayload.builder()
.refType(ReferenceType.Repository)
.build();
GitHubEvent event = createEvent(GitHubEventType.CreateEvent, payload);
updateView(event);
verify("user created repository repo");
}
/**
* Verify text of create event
*/
@Test
@UiThreadTest
public void testCreateBranchEvent() {
CreatePayload payload = CreatePayload.builder()
.refType(ReferenceType.Branch)
.ref("b1")
.build();
GitHubEvent event = createEvent(GitHubEventType.CreateEvent, payload);
updateView(event);
verify("user created branch b1 at user/repo");
}
/**
* Verify text of delete event
*/
@Test
@UiThreadTest
public void testDelete() {
DeletePayload payload = DeletePayload.builder()
.refType(ReferenceType.Branch)
.ref("b1")
.build();
GitHubEvent event = createEvent(GitHubEventType.DeleteEvent, payload);
updateView(event);
verify("user deleted branch b1 at user/repo");
}
/**
* Verify text of follow event
*/
@Test
@UiThreadTest
public void testFollow() {
User target = User.builder()
.login("user2")
.build();
FollowPayload payload = FollowPayload.builder()
.target(target)
.build();
GitHubEvent event = createEvent(GitHubEventType.FollowEvent, payload);
updateView(event);
verify("user started following user2");
}
/**
* Verify text of Gist event
*/
@Test
@UiThreadTest
public void testGist() {
Gist gist = Gist.builder()
.id("1")
.build();
GistPayload payload = GistPayload.builder()
.action(GistPayload.Action.Created)
.gist(gist)
.build();
GitHubEvent event = createEvent(GitHubEventType.GistEvent, payload);
updateView(event);
verify("user created Gist 1");
}
/**
* Verify text of wiki event
*/
@Test
@UiThreadTest
public void testWiki() {
GitHubEvent event = createEvent(GitHubEventType.GollumEvent, null);
updateView(event);
verify("user updated the wiki in user/repo");
}
/**
* Verify text of issue comment event
*/
@Test
@UiThreadTest
public void testIssueComment() {
Issue issue = Issue.builder()
.number(5)
.build();
IssueCommentPayload payload = IssueCommentPayload.builder()
.issue(issue)
.build();
GitHubEvent event = createEvent(GitHubEventType.IssueCommentEvent, payload);
updateView(event);
verify("user commented on issue 5 on user/repo");
}
/**
* Verify text of issue event
*/
@Test
@UiThreadTest
public void testIssue() {
Issue issue = Issue.builder()
.number(8)
.build();
IssuesPayload payload = IssuesPayload.builder()
.action(IssuesPayload.Action.Closed)
.issue(issue)
.build();
GitHubEvent event = createEvent(GitHubEventType.IssuesEvent, payload);
updateView(event);
verify("user closed issue 8 on user/repo");
}
/**
* Verify text of member event
*/
@Test
@UiThreadTest
public void testAddMember() {
User user = User.builder()
.login("person")
.build();
MemberPayload payload = MemberPayload.builder()
.member(user)
.build();
GitHubEvent event = createEvent(GitHubEventType.MemberEvent, payload);
updateView(event);
verify("user added person as a collaborator to user/repo");
}
/**
* Verify text of open sourced event
*/
@Test
@UiThreadTest
public void testOpenSourced() {
GitHubEvent event = createEvent(GitHubEventType.PublicEvent, null);
updateView(event);
verify("user open sourced repository user/repo");
}
/**
* Verify text of watch event
*/
@Test
@UiThreadTest
public void testWatch() {
GitHubEvent event = createEvent(GitHubEventType.WatchEvent, null);
updateView(event);
verify("user starred user/repo");
}
/**
* Verify text of pull request event
*/
@Test
@UiThreadTest
public void testPullRequest() {
PullRequestPayload payload = PullRequestPayload.builder()
.number(30)
.action(PullRequestPayload.Action.Closed)
.build();
GitHubEvent event = createEvent(GitHubEventType.PullRequestEvent, payload);
updateView(event);
verify("user closed pull request 30 on user/repo");
}
/**
* Verify text of push event
*/
@Test
@UiThreadTest
public void testPush() {
PushPayload payload = PushPayload.builder()
.ref("refs/heads/master")
.commits(Collections.emptyList())
.build();
GitHubEvent event = createEvent(GitHubEventType.PushEvent, payload);
updateView(event);
verify("user pushed to master at user/repo");
}
/**
* Verify text of push event
*/
@Test
@UiThreadTest
public void testTeamAdd() {
Team team = Team.builder()
.name("t1")
.build();
Repository repo = Repository.builder()
.name("r2")
.build();
TeamAddPayload payload = TeamAddPayload.builder()
.repository(repo)
.team(team)
.build();
GitHubEvent event = createEvent(GitHubEventType.TeamAddEvent, payload);
updateView(event);
verify("user added r2 to team t1");
}
}
================================================
FILE: app/src/androidTest/java/com/github/pockethub/android/tests/ViewVisibiltyIdlingResource.kt
================================================
package com.github.pockethub.android.tests
import android.app.Activity
import android.os.Handler
import android.view.View
import androidx.annotation.IdRes
import androidx.test.espresso.IdlingResource
import androidx.test.espresso.IdlingResource.ResourceCallback
import java.lang.ref.WeakReference
/**
* [IdlingResource] which monitors a [View] for a given visibility state. The resource is considered idle when the
* View has the desired state.
*
* @author vaughandroid@gmail.com
* @param view the View to monitor
* @param visibility One of [View.VISIBLE], [View.INVISIBLE], or [View.GONE].
*/
class ViewVisibilityIdlingResource(view: View, private val mVisibility: Int) : IdlingResource {
/** Hold weak reference to the View, so we don't leak memory even if the resource isn't unregistered. */
private val mView: WeakReference<View> = WeakReference(view)
private val mName: String
private var mResourceCallback: ResourceCallback? = null
/**
* @param activity which owns the View
* @param viewId ID of the View to monitor
* @param visibility One of [View.VISIBLE], [View.INVISIBLE], or [View.GONE].
*/
constructor(activity: Activity, @IdRes viewId: Int, visibility: Int)
: this(activity.findViewById<View>(viewId), visibility)
init {
mName = "View Visibility for view " + view.id + "(@" + System.identityHashCode(mView) + ")"
}
override fun getName(): String {
return mName
}
override fun isIdleNow(): Boolean {
val view = mView.get()
val isIdle = view == null || view.visibility == mVisibility
if (isIdle) {
if (mResourceCallback != null) {
mResourceCallback!!.onTransitionToIdle()
}
} else {
/* Force a re-check of the idle state in a little while.
* If isIdleNow() returns false, Espresso only polls it every few seconds which can slow down our tests.
* Ideally we would watch for the visibility state changing, but AFAIK we can't detect when a View's
* visibility changes to GONE.
*/
Handler().postDelayed({ isIdleNow }, IDLE_POLL_DELAY_MILLIS.toLong())
}
return isIdle
}
override fun registerIdleTransitionCallback(resourceCallback: ResourceCallback) {
mResourceCallback = resourceCallback
}
companion object {
private val IDLE_POLL_DELAY_MILLIS = 100
}
}
================================================
FILE: app/src/androidTest/java/com/github/pockethub/android/tests/commit/CommitUriMatcherTest.java
================================================
/*
* Copyright (c) 2015 PocketHub
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.github.pockethub.android.tests.commit;
import android.net.Uri;
import androidx.test.filters.SmallTest;
import androidx.test.runner.AndroidJUnit4;
import com.github.pockethub.android.core.commit.CommitMatch;
import com.github.pockethub.android.core.commit.CommitUriMatcher;
import org.junit.Test;
import org.junit.runner.RunWith;
import static junit.framework.Assert.assertNotNull;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
/**
* Tests of {@link CommitUriMatcher}
*/
@RunWith(AndroidJUnit4.class)
@SmallTest
public class CommitUriMatcherTest {
/**
* Verity empty uri
*/
@Test
public void testEmptyUri() {
assertNull(CommitUriMatcher.getCommit(Uri.parse("")));
}
/**
* Verify non-hex commit SHA-1 in uri
*/
public void testNonHexId() {
assertNull(CommitUriMatcher.getCommit(Uri
.parse("https://github.com/defunkt/resque/commit/abck")));
}
/**
* Verify http uri
*/
@Test
public void testHttpUri() {
CommitMatch commit = CommitUriMatcher.getCommit(Uri
.parse("https://github.com/defunkt/resque/commit/abcd"));
assertNotNull(commit);
assertEquals("abcd", commit.getCommit());
assertNotNull(commit.getRepository());
assertEquals("resque", commit.getRepository().name());
assertNotNull(commit.getRepository().owner());
assertEquals("defunkt", commit.getRepository().owner().login());
}
/**
* Verify https uri
*/
@Test
public void testHttpsUri() {
CommitMatch commit = CommitUriMatcher.getCommit(Uri
.parse("https://github.com/defunkt/resque/commit/1234"));
assertNotNull(commit);
assertEquals("1234", commit.getCommit());
assertNotNull(commit.getRepository());
assertEquals("resque", commit.getRepository().name());
assertNotNull(commit.getRepository().owner());
assertEquals("defunkt", commit.getRepository().owner().login());
}
/**
* Verify uri with comment fragment
*/
@Test
public void testCommentUri() {
CommitMatch commit = CommitUriMatcher
.getCommit(Uri
.parse("https://github.com/defunkt/resque/commit/a1b2#commitcomment-1605701"));
assertNotNull(commit);
assertEquals("a1b2", commit.getCommit());
assertNotNull(commit.getRepository());
assertEquals("resque", commit.getRepository().name());
assertNotNull(commit.getRepository().owner());
assertEquals("defunkt", commit.getRepository().owner().login());
}
}
================================================
FILE: app/src/androidTest/java/com/github/pockethub/android/tests/commit/CommitUtilsTest.java
================================================
/*
* Copyright (c) 2015 PocketHub
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.github.pockethub.android.tests.commit;
import androidx.test.filters.SmallTest;
import com.github.pockethub.android.core.commit.CommitUtils;
import com.meisolsson.githubsdk.model.Commit;
import com.meisolsson.githubsdk.model.GitHubFile;
import com.meisolsson.githubsdk.model.git.GitCommit;
import com.meisolsson.githubsdk.model.git.GitUser;
import org.junit.Test;
import java.util.Date;
import static junit.framework.Assert.assertFalse;
import static junit.framework.TestCase.assertTrue;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
/**
* Test of {@link CommitUtils}
*/
@SmallTest
public class CommitUtilsTest {
/**
* Test commit SHA-1 abbreviation
*/
@Test
public void testAbbreviate() {
assertNull(CommitUtils.abbreviate((GitCommit) null));
assertNull(CommitUtils.abbreviate((Commit) null));
assertNull(CommitUtils.abbreviate((String) null));
assertEquals("", CommitUtils.abbreviate(""));
assertEquals("a", CommitUtils.abbreviate("a"));
assertEquals("abcdefghij", CommitUtils.abbreviate("abcdefghijk"));
GitCommit gitCommit = GitCommit.builder()
.sha("abc")
.build();
assertEquals("abc", CommitUtils.abbreviate(gitCommit));
Commit commit = Commit.builder()
.sha("abcd")
.build();
assertEquals("abcd", CommitUtils.abbreviate(commit));
}
/**
* Test commit name parsing from path
*/
@Test
public void testGetName() {
assertNull(CommitUtils.getName((String) null));
assertNull(CommitUtils.getName((GitHubFile) null));
assertEquals("", CommitUtils.getName(""));
assertEquals("/", CommitUtils.getName("/"));
assertEquals("b", CommitUtils.getName("a/b"));
GitHubFile file = GitHubFile.builder().filename("a/b/c").build();
assertEquals("c", CommitUtils.getName(file));
}
/**
* Test commit SHA-1 evaluation
*/
@Test
public void testIsValidCommit() {
assertFalse(CommitUtils.isValidCommit(""));
assertTrue(CommitUtils.isValidCommit("a"));
assertTrue(CommitUtils.isValidCommit("bbbbb"));
assertFalse(CommitUtils.isValidCommit("am"));
assertFalse(CommitUtils.isValidCommit("xyz"));
}
/**
* Test parsing author from commit
*/
@Test
public void testGetAuthor() {
Commit commit = Commit.builder().build();
assertNull(CommitUtils.getAuthor(commit));
GitCommit rawCommit = GitCommit.builder().build();
commit = commit.toBuilder()
.commit(rawCommit)
.build();
assertNull(CommitUtils.getAuthor(commit));
GitUser user = GitUser.builder().build();
rawCommit = rawCommit.toBuilder()
.author(user)
.build();
commit = commit.toBuilder()
.commit(rawCommit)
.build();
assertNull(CommitUtils.getAuthor(commit));
user = user.toBuilder().name("u1").build();
rawCommit = rawCommit.toBuilder()
.author(user)
.build();
commit = commit.toBuilder()
.commit(rawCommit)
.build();
assertEquals("u1", CommitUtils.getAuthor(commit));
}
/**
* Test parsing committer from commit
*/
@Test
public void testGetCommitter() {
Commit commit = Commit.builder().build();
assertNull(CommitUtils.getCommitter(commit));
GitCommit rawCommit = GitCommit.builder().build();
commit = commit.toBuilder()
.commit(rawCommit)
.build();
assertNull(CommitUtils.getCommitter(commit));
GitUser user = GitUser.builder().build();
rawCommit = rawCommit.toBuilder()
.committer(user)
.build();
commit = commit.toBuilder()
.commit(rawCommit)
.build();
assertNull(CommitUtils.getCommitter(commit));
user = user.toBuilder().name("u1").build();
rawCommit = rawCommit.toBuilder()
.committer(user)
.build();
commit = commit.toBuilder()
.commit(rawCommit)
.build();
assertEquals("u1", CommitUtils.getCommitter(commit));
user = user.toBuilder().name("u2").build();
rawCommit = rawCommit.toBuilder()
.committer(user)
.build();
commit = commit.toBuilder()
.commit(rawCommit)
.build();
assertEquals("u2", CommitUtils.getCommitter(commit));
}
/**
* Test parsing author date from commit
*/
@Test
public void testGetAuthorDate() {
Commit commit = Commit.builder().build();
assertNull(CommitUtils.getAuthorDate(commit));
GitCommit rawCommit = GitCommit.builder().build();
commit = commit.toBuilder()
.commit(rawCommit)
.build();
assertNull(CommitUtils.getAuthorDate(commit));
GitUser user = GitUser.builder().build();
rawCommit = rawCommit.toBuilder()
.author(user)
.build();
commit = commit.toBuilder()
.commit(rawCommit)
.build();
assertNull(CommitUtils.getAuthorDate(commit));
user = user.toBuilder()
.date(new Date(12000))
.build();
rawCommit = rawCommit.toBuilder()
.author(user)
.build();
commit = commit.toBuilder()
.commit(rawCommit)
.build();
assertEquals(new Date(12000), CommitUtils.getAuthorDate(commit));
}
/**
* Test parsing committer date from commit
*/
@Test
public void testGetCommitterDate() {
Commit commit = Commit.builder().build();
assertNull(CommitUtils.getCommitterDate(commit));
GitCommit rawCommit = GitCommit.builder().build();
commit = commit.toBuilder()
.commit(rawCommit)
.build();
assertNull(CommitUtils.getCommitterDate(commit));
GitUser user = GitUser.builder().build();
rawCommit = rawCommit.toBuilder()
.committer(user)
.build();
commit = commit.toBuilder()
.commit(rawCommit)
.build();
assertNull(CommitUtils.getCommitterDate(commit));
user = user.toBuilder()
.date(new Date(12000))
.build();
rawCommit = rawCommit.toBuilder()
.committer(user)
.build();
commit = commit.toBuilder()
.commit(rawCommit)
.build();
assertEquals(new Date(12000), CommitUtils.getCommitterDate(commit));
}
}
================================================
FILE: app/src/androidTest/java/com/github/pockethub/android/tests/commit/CreateCommentActivityTest.java
================================================
/*
* Copyright (c) 2015 PocketHub
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.github.pockethub.android.tests.commit;
import androidx.test.espresso.ViewInteraction;
import androidx.test.espresso.action.ViewActions;
import androidx.test.espresso.assertion.ViewAssertions;
import androidx.test.rule.ActivityTestRule;
import com.github.pockethub.android.R;
import com.github.pockethub.android.ui.commit.CreateCommentActivity;
import com.meisolsson.githubsdk.model.Repository;
import com.meisolsson.githubsdk.model.User;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import static androidx.test.espresso.Espresso.closeSoftKeyboard;
import static androidx.test.espresso.Espresso.onView;
import static androidx.test.espresso.matcher.ViewMatchers.isEnabled;
import static androidx.test.espresso.matcher.ViewMatchers.withId;
import static org.hamcrest.CoreMatchers.not;
/**
* Tests of {@link CreateCommentActivity}
*/
public class CreateCommentActivityTest {
@Rule
public ActivityTestRule<CreateCommentActivity> activityTestRule =
new ActivityTestRule<>(CreateCommentActivity.class, false, false);
@Before
public void setUp() {
User user = User.builder()
.login("owner")
.build();
Repository repo = Repository.builder()
.name("name")
.owner(user)
.build();
activityTestRule.launchActivity(CreateCommentActivity.createIntent(repo, "abcdef"));
}
/**
* Verify empty comment can't be created
*/
@Test
public void testEmptyCommentIsProhibited() {
ViewInteraction createMenu = onView(withId(R.id.m_apply));
ViewInteraction comment = onView(withId(R.id.et_comment));
createMenu.check(ViewAssertions.matches(not(isEnabled())));
closeSoftKeyboard();
comment.perform(ViewActions.typeText("a"));
createMenu.check(ViewAssertions.matches(isEnabled()));
comment.perform(ViewActions.replaceText(""));
createMenu.check(ViewAssertions.matches(not(isEnabled())));
}
}
================================================
FILE: app/src/androidTest/java/com/github/pockethub/android/tests/commit/DiffStylerTest.java
================================================
/*
* Copyright (c) 2015 PocketHub
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.github.pockethub.android.tests.commit;
import androidx.test.filters.SmallTest;
import com.github.pockethub.android.ui.commit.DiffStyler;
import com.meisolsson.githubsdk.model.GitHubFile;
import org.junit.Test;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.StringReader;
import java.util.Collections;
import java.util.List;
import static androidx.test.InstrumentationRegistry.getTargetContext;
import static junit.framework.Assert.assertNotNull;
import static junit.framework.TestCase.assertTrue;
import static org.junit.Assert.assertEquals;
/**
* Tests of {@link DiffStyler}
*/
@SmallTest
public class DiffStylerTest {
private void compareStyled(String patch) throws IOException {
assertNotNull(patch);
String fileName = "file.txt";
DiffStyler styler = new DiffStyler(getTargetContext().getResources());
GitHubFile file = GitHubFile.builder()
.filename(fileName)
.patch(patch)
.build();
styler.setFiles(Collections.singletonList(file));
List<CharSequence> styled = styler.get(fileName);
assertNotNull(styled);
BufferedReader reader = new BufferedReader(new StringReader(patch));
String line = reader.readLine();
int processed = 0;
while (line != null) {
assertEquals(line, styled.get(processed).toString());
line = reader.readLine();
processed++;
}
assertEquals(processed, styled.size());
}
/**
* Test styler with empty files
*/
@Test
public void testEmptyFiles() {
DiffStyler styler = new DiffStyler(getTargetContext().getResources());
styler.setFiles(null);
assertTrue(styler.get("navigation_drawer_header_background").isEmpty());
styler.setFiles(Collections.emptyList());
assertTrue(styler.get("navigation_drawer_header_background").isEmpty());
}
/**
* Test styler with empty patch
*/
@Test
public void testEmptyPatch() {
DiffStyler styler = new DiffStyler(getTargetContext().getResources());
GitHubFile file = GitHubFile.builder()
.filename("file.txt")
.build();
styler.setFiles(Collections.singletonList(file));
assertTrue(styler.get("file.txt").isEmpty());
file = file.toBuilder().filename("").build();
styler.setFiles(Collections.singletonList(file));
assertTrue(styler.get("file.txt").isEmpty());
}
/**
* Test styler for file with only single newline
*
* @throws IOException
*/
@Test
public void testOnlyNewline() throws IOException {
compareStyled("\n");
}
/**
* Test styler for file with an empty patch line with other valid lines
*
* @throws IOException
*/
@Test
public void testEmptyPatchLineWithOtherValidLines() throws IOException {
compareStyled("@@ 0,1 0,1 @@\n\n-navigation_drawer_header_background\n");
}
/**
* Test styler for file with trailing empty line
*
* @throws IOException
*/
@Test
public void testTrailingEmptyLine() throws IOException {
compareStyled("@@ 0,1 0,1 @@\n-navigation_drawer_header_background\n\n");
}
/**
* Test styler for file with only newlines
*
* @throws IOException
*/
@Test
public void testOnlyNewlines() throws IOException {
compareStyled("\n\n\n");
}
/**
* Test styler for patch with no trailing newline after the second line
*
* @throws IOException
*/
@Test
public void testNoTrailingNewlineAfterSecondLine() throws IOException {
compareStyled("@@ 1,2 1,2 @@\n+navigation_drawer_header_background");
}
/**
* Test styler for patch with no trailing newline
*
* @throws IOException
*/
@Test
public void testNoTrailingNewline() throws IOException {
compareStyled("@@ 1,2 1,2 @@");
}
/**
* Test styler for file with valid patch
*
* @throws IOException
*/
@Test
public void testFormattedPatch() throws IOException {
compareStyled("@@ 1,2 1,2 @@\n+navigation_drawer_header_background\n");
}
}
================================================
FILE: app/src/androidTest/java/com/github/pockethub/android/tests/commit/FullCommitTest.java
================================================
/*
* Copyright (c) 2015 PocketHub
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.github.pockethub.android.tests.commit;
import androidx.test.filters.SmallTest;
import com.github.pockethub.android.core.commit.FullCommit;
import com.meisolsson.githubsdk.model.Commit;
import com.meisolsson.githubsdk.model.GitHubFile;
import com.meisolsson.githubsdk.model.git.GitComment;
import org.junit.Test;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import static junit.framework.Assert.assertFalse;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
/**
* Tests of {@link FullCommit}
*/
@SmallTest
public class FullCommitTest {
/**
* Test commit with one file and one line comment
*/
@Test
public void testSingleLineCommentSingleFile() {
GitHubFile file = GitHubFile.builder()
.filename("a.txt")
.build();
GitComment comment = GitComment.builder()
.path(file.filename())
.position(10)
.build();
Commit commit = Commit.builder()
.files(Collections.singletonList(file))
.build();
FullCommit full = new FullCommit(commit, new ArrayList<>(
Collections.singletonList(comment)));
assertTrue(full.isEmpty());
assertEquals(1, full.getFiles().size());
assertEquals(comment, full.getFiles().get(0).get(10).get(0));
}
/**
* Test commit with one file and one commit comment
*/
@Test
public void testSingleCommentSingleFile() {
GitHubFile file = GitHubFile.builder()
.filename("a.txt")
.build();
GitComment comment = GitComment.builder().build();
Commit commit = Commit.builder()
.files(Collections.singletonList(file))
.build();
FullCommit full = new FullCommit(commit, Collections.singletonList(comment));
assertFalse(full.isEmpty());
assertEquals(comment, full.get(0));
assertEquals(1, full.getFiles().size());
}
/**
* Test commit with no files and one commit comment
*/
@Test
public void testSingleCommentNoFiles() {
GitComment comment = GitComment.builder().build();
Commit commit = Commit.builder().build();
FullCommit full = new FullCommit(commit, Collections.singletonList(comment));
assertFalse(full.isEmpty());
assertEquals(comment, full.get(0));
assertTrue(full.getFiles().isEmpty());
}
/**
* Test commit with no comments and one file
*/
@Test
public void testNoCommentsSingleFile() {
GitHubFile file = GitHubFile.builder()
.filename("a.txt")
.build();
Commit commit = Commit.builder()
.files(Collections.singletonList(file))
.build();
FullCommit full = new FullCommit(commit);
assertTrue(full.isEmpty());
assertEquals(1, full.getFiles().size());
}
/**
* Test commit with line and global comments
*/
@Test
public void testBothTypesOfComments() {
GitHubFile file = GitHubFile.builder()
.filename("a.txt")
.build();
GitComment comment1 = GitComment.builder()
.path(file.filename())
.position(10)
.build();
GitComment comment2 = GitComment.builder().build();
Commit commit = Commit.builder()
.files(Collections.singletonList(file))
.build();
FullCommit full = new FullCommit(commit, new ArrayList<>(Arrays.asList(comment1, comment2)));
assertEquals(1, full.size());
assertEquals(comment2, full.get(0));
assertEquals(1, full.getFiles().size());
assertEquals(comment1, full.getFiles().get(0).get(10).get(0));
}
}
================================================
FILE: app/src/androidTest/java/com/github/pockethub/android/tests/gist/CreateCommentActivityTest.java
================================================
/*
* Copyright (c) 2015 PocketHub
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.github.pockethub.android.tests.gist;
import androidx.test.espresso.ViewInteraction;
import androidx.test.espresso.action.ViewActions;
import androidx.test.espresso.assertion.ViewAssertions;
import androidx.test.rule.ActivityTestRule;
import com.github.pockethub.android.R;
import com.github.pockethub.android.ui.gist.CreateCommentActivity;
import com.meisolsson.githubsdk.model.Gist;
import com.meisolsson.githubsdk.model.User;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import static androidx.test.espresso.Espresso.closeSoftKeyboard;
import static androidx.test.espresso.Espresso.onView;
import static androidx.test.espresso.matcher.ViewMatchers.isEnabled;
import static androidx.test.espresso.matcher.ViewMatchers.withId;
import static org.hamcrest.CoreMatchers.not;
/**
* Tests of {@link CreateCommentActivity}
*/
public class CreateCommentActivityTest {
@Rule
public ActivityTestRule<CreateCommentActivity> activityTestRule =
new ActivityTestRule<>(CreateCommentActivity.class, false, false);
@Before
public void setUp() {
User user = User.builder()
.login("abc")
.build();
Gist gist = Gist.builder()
.owner(user)
.id("123")
.build();
activityTestRule.launchActivity(CreateCommentActivity.createIntent(gist));
}
/**
* Verify empty comment can't be created
*
* @throws Throwable
*/
@Test
public void testEmptyCommentIsProhibited() {
ViewInteraction createMenu = onView(withId(R.id.m_apply));
ViewInteraction comment = onView(withId(R.id.et_comment));
createMenu.check(ViewAssertions.matches(not(isEnabled())));
closeSoftKeyboard();
comment.perform(ViewActions.typeText("a"));
createMenu.check(ViewAssertions.matches(isEnabled()));
comment.perform(ViewActions.replaceText(""));
createMenu.check(ViewAssertions.matches(not(isEnabled())));
}
}
================================================
FILE: app/src/androidTest/java/com/github/pockethub/android/tests/gist/CreateGistActivityTest.java
================================================
/*
* Copyright (c) 2015 PocketHub
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.github.pockethub.android.tests.gist;
import android.content.Intent;
import androidx.test.espresso.ViewInteraction;
import androidx.test.espresso.action.ViewActions;
import androidx.test.espresso.assertion.ViewAssertions;
import androidx.test.rule.ActivityTestRule;
import com.github.pockethub.android.R;
import com.github.pockethub.android.R.id;
import com.github.pockethub.android.ui.gist.CreateGistActivity;
import org.junit.Rule;
import org.junit.Test;
import static android.content.Intent.EXTRA_TEXT;
import static androidx.test.espresso.Espresso.onView;
import static androidx.test.espresso.matcher.ViewMatchers.*;
import static org.hamcrest.CoreMatchers.not;
/**
* Tests of {@link CreateGistActivity}
*/
public class CreateGistActivityTest {
@Rule
public ActivityTestRule<CreateGistActivity> activityTestRule =
new ActivityTestRule<>(CreateGistActivity.class, false, false);
/**
* Create Gist with initial text
*/
@Test
public void testCreateWithInitialText() {
activityTestRule.launchActivity(new Intent().putExtra(EXTRA_TEXT, "gist content"));
onView(withId(id.create_gist))
.check(ViewAssertions.matches(isEnabled()));
onView(withId(id.et_gist_content))
.check(ViewAssertions.matches(withText("gist content")));
}
/**
* Create Gist with no initial text
*
* @throws Throwable
*/
@Test
public void testCreateWithNoInitialText() throws Throwable {
activityTestRule.launchActivity(new Intent());
ViewInteraction createMenu = onView(withId(R.id.create_gist));
ViewInteraction content = onView(withId(R.id.et_gist_content));
createMenu.check(ViewAssertions.matches(not(isEnabled())));
content.perform(ViewActions.typeText("gist content"));
createMenu.check(ViewAssertions.matches(isEnabled()));
}
}
================================================
FILE: app/src/androidTest/java/com/github/pockethub/android/tests/gist/GistFilesViewActivityTest.java
================================================
/*
* Copyright (c) 2015 PocketHub
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.github.pockethub.android.tests.gist;
import android.content.Context;
import androidx.collection.ArrayMap;
import androidx.test.rule.ActivityTestRule;
import androidx.viewpager.widget.ViewPager;
import com.github.pockethub.android.PocketHub;
import com.github.pockethub.android.R.id;
import com.github.pockethub.android.core.gist.GistStore;
import com.github.pockethub.android.ui.gist.GistFilesViewActivity;
import com.meisolsson.githubsdk.model.Gist;
import com.meisolsson.githubsdk.model.GistFile;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import java.util.Map;
import static androidx.test.InstrumentationRegistry.getInstrumentation;
import static org.junit.Assert.assertEquals;
/**
* Tests of {@link GistFilesViewActivity}
*/
public class GistFilesViewActivityTest {
protected GistStore store;
private Gist gist;
@Rule
public ActivityTestRule<GistFilesViewActivity> activityTestRule =
new ActivityTestRule<>(GistFilesViewActivity.class, false, false);
@Before
public void setUp() {
Context context = getInstrumentation().getTargetContext();
PocketHub pocketHub = (PocketHub) context.getApplicationContext();
store = pocketHub.applicationComponent().gistStore();
Map<String, GistFile> files = new ArrayMap<>();
GistFile a = GistFile.builder()
.content("aa")
.filename("a")
.build();
GistFile b = GistFile.builder()
.content("bb")
.filename("b")
.build();
files.put("a", a);
files.put("b", b);
gist = Gist.builder()
.id("abcd")
.files(files)
.build();
store.addGist(gist);
activityTestRule.launchActivity(GistFilesViewActivity.Companion.createIntent(gist, 0));
}
/**
* Verify changing pages between gist files
*
* @throws Throwable
*/
@Test
public void testChangingPages() throws Throwable {
final ViewPager pager = activityTestRule.getActivity().findViewById(id.vp_pages);
assertEquals(0, pager.getCurrentItem());
activityTestRule.runOnUiThread(() -> pager.setCurrentItem(1, true));
assertEquals(1, pager.getCurrentItem());
activityTestRule.runOnUiThread(() -> pager.setCurrentItem(0, true));
assertEquals(0, pager.getCurrentItem());
}
}
================================================
FILE: app/src/androidTest/java/com/github/pockethub/android/tests/gist/GistStoreTest.java
================================================
/*
* Copyright (c) 2015 PocketHub
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.github.pockethub.android.tests.gist;
import androidx.test.filters.SmallTest;
import com.github.pockethub.android.core.gist.GistStore;
import com.meisolsson.githubsdk.model.Gist;
import org.junit.Test;
import static junit.framework.Assert.assertNull;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotEquals;
/**
* Unit tests of {@link GistStore}
*/
@SmallTest
public class GistStoreTest {
/**
* Verify issue is updated when re-added
*/
@Test
public void testReuseIssue() {
GistStore store = new GistStore();
assertNull(store.getGist("abcd"));
Gist gist = Gist.builder()
.id("abcd")
.description("description")
.build();
// The gist is added and the store will return the given gist
assertEquals(gist, store.addGist(gist));
assertEquals(gist, store.getGist("abcd"));
Gist gist2 = Gist.builder()
.id("abcd")
.description("description2")
.build();
// The gist has now been updated and should not return the same gist
assertNotEquals(gist, store.addGist(gist2));
assertNotEquals(gist.description(), gist2.description());
assertNotEquals(gist, store.getGist("abcd"));
}
}
================================================
FILE: app/src/androidTest/java/com/github/pockethub/android/tests/gist/GistUriMatcherTest.java
================================================
/*
* Copyright (c) 2015 PocketHub
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.github.pockethub.android.tests.gist;
import android.net.Uri;
import androidx.test.filters.SmallTest;
import com.github.pockethub.android.core.gist.GistUriMatcher;
import com.meisolsson.githubsdk.model.Gist;
import org.junit.Test;
import static junit.framework.Assert.assertNotNull;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
/**
* Unit tests of {@link GistUriMatcher}
*/
@SmallTest
public class GistUriMatcherTest {
/**
* Verify empty uri
*/
@Test
public void testEmptyUri() {
assertNull(GistUriMatcher.getGist(Uri.parse("")));
}
/**
* Verify invalid Gist ids in URIs
*/
@Test
public void testNonGistId() {
assertNull(GistUriMatcher.getGist(Uri
.parse("https://gist.github.com/TEST")));
assertNull(GistUriMatcher.getGist(Uri
.parse("https://gist.github.com/abc%20")));
assertNull(GistUriMatcher.getGist(Uri
.parse("https://gist.github.com/abcdefg")));
}
/**
* Verify public Gist id
*/
@Test
public void testPublicGist() {
Gist gist = GistUriMatcher.getGist(Uri
.parse("https://gist.github.com/1234"));
assertNotNull(gist);
assertEquals("1234", gist.id());
}
/**
* Verify public Gist id
*/
@Test
public void testPrivateGist() {
Gist gist = GistUriMatcher.getGist(Uri
.parse("https://gist.github.com/abcd1234abcd1234abcd"));
assertNotNull(gist);
assertEquals("abcd1234abcd1234abcd", gist.id());
}
}
================================================
FILE: app/src/androidTest/java/com/github/pockethub/android/tests/issue/CreateCommentActivityTest.java
================================================
/*
* Copyright (c) 2015 PocketHub
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.github.pockethub.android.tests.issue;
import androidx.test.espresso.ViewInteraction;
import androidx.test.espresso.action.ViewActions;
import androidx.test.espresso.assertion.ViewAssertions;
import androidx.test.rule.ActivityTestRule;
import com.github.pockethub.android.R;
import com.github.pockethub.android.ui.issue.CreateCommentActivity;
import com.github.pockethub.android.util.InfoUtils;
import com.meisolsson.githubsdk.model.User;
import org.junit.Before;
import org.junit.Test;
import static androidx.test.espresso.Espresso.closeSoftKeyboard;
import static androidx.test.espresso.Espresso.onView;
import static androidx.test.espresso.matcher.ViewMatchers.isEnabled;
import static androidx.test.espresso.matcher.ViewMatchers.withId;
import static org.hamcrest.CoreMatchers.not;
/**
* Tests of {@link CreateCommentActivity}
*/
public class CreateCommentActivityTest {
public ActivityTestRule<CreateCommentActivity> activityTestRule =
new ActivityTestRule<>(CreateCommentActivity.class);
@Before
public void setUp() {
User user = User.builder()
.login("u")
.build();
activityTestRule.launchActivity(
CreateCommentActivity.createIntent(
InfoUtils.createRepoFromData("o", "u"),
1,
user
)
);
}
/**
* Verify empty comment can't be created
*
* @throws Throwable
*/
@Test
public void testEmptyCommentIsProhibited() {
ViewInteraction createMenu = onView(withId(R.id.m_apply));
ViewInteraction comment = onView(withId(R.id.et_comment));
createMenu.check(ViewAssertions.matches(not(isEnabled())));
closeSoftKeyboard();
comment.perform(ViewActions.typeText("a"));
createMenu.check(ViewAssertions.matches(isEnabled()));
comment.perform(ViewActions.replaceText(""));
createMenu.check(ViewAssertions.matches(not(isEnabled())));
}
}
================================================
FILE: app/src/androidTest/java/com/github/pockethub/android/tests/issue/EditIssueActivityTest.java
================================================
/*
* Copyright (c) 2015 PocketHub
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.github.pockethub.android.tests.issue;
import android.view.View;
import androidx.test.espresso.IdlingRegistry;
import androidx.test.espresso.ViewInteraction;
import androidx.test.espresso.action.ViewActions;
import androidx.test.espresso.assertion.ViewAssertions;
import androidx.test.rule.ActivityTestRule;
import com.github.pockethub.android.R;
import com.github.pockethub.android.tests.ViewVisibilityIdlingResource;
import com.github.pockethub.android.ui.issue.EditIssueActivity;
import com.github.pockethub.android.util.InfoUtils;
import com.meisolsson.githubsdk.model.Repository;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import static androidx.test.espresso.Espresso.closeSoftKeyboard;
import static androidx.test.espresso.Espresso.onView;
import static androidx.test.espresso.matcher.ViewMatchers.isEnabled;
import static androidx.test.espresso.matcher.ViewMatchers.withId;
import static org.hamcrest.CoreMatchers.not;
/**
* Tests of {@link EditIssueActivity}
*/
public class EditIssueActivityTest {
@Rule
public ActivityTestRule<EditIssueActivity> activityTestRule =
new ActivityTestRule<>(EditIssueActivity.class, true, false);
@Before
public void setUp() {
Repository repo = InfoUtils.createRepoFromData("owner", "repo");
activityTestRule.launchActivity(EditIssueActivity.Companion.createIntent(repo));
}
/**
* Verify save menu is properly enabled/disable depending on the issue have
* a non-empty title
*
* @throws Throwable
*/
@Test
public void testSaveMenuEnabled() {
ViewInteraction createMenu = onView(withId(R.id.m_apply));
ViewInteraction comment = onView(withId(R.id.et_issue_title));
ViewVisibilityIdlingResource idlingResource =
new ViewVisibilityIdlingResource(
activityTestRule.getActivity(),
R.id.sv_issue_content,
View.VISIBLE
);
IdlingRegistry.getInstance().register(idlingResource);
createMenu.check(ViewAssertions.matches(not(isEnabled())));
closeSoftKeyboard();
comment.perform(ViewActions.typeText("a"));
createMenu.check(ViewAssertions.matches(isEnabled()));
comment.perform(ViewActions.replaceText(""));
createMenu.check(ViewAssertions.matches(not(isEnabled())));
IdlingRegistry.getInstance().unregister(idlingResource);
}
}
================================================
FILE: app/src/androidTest/java/com/github/pockethub/android/tests/issue/EditIssuesFilterActivityTest.java
================================================
/*
* Copyright (c) 2015 PocketHub
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.github.pockethub.android.tests.issue;
import androidx.test.rule.ActivityTestRule;
import com.github.pockethub.android.core.issue.IssueFilter;
import com.github.pockethub.android.ui.issue.EditIssuesFilterActivity;
import com.github.pockethub.android.util.InfoUtils;
import com.meisolsson.githubsdk.model.Repository;
import org.junit.Before;
import org.junit.Rule;
import java.util.UUID;
/**
* Tests of {@link EditIssuesFilterActivity}
*/
public class EditIssuesFilterActivityTest {
@Rule
public ActivityTestRule<EditIssuesFilterActivity> activityTestRule =
new ActivityTestRule<>(EditIssuesFilterActivity.class);
@Before
public void setUp() {
Repository repo = InfoUtils.createRepoFromData("owner", "name");
IssueFilter filter = new IssueFilter(repo, UUID.randomUUID().toString());
activityTestRule.launchActivity(EditIssuesFilterActivity.Companion.createIntent(filter));
}
}
================================================
FILE: app/src/androidTest/java/com/github/pockethub/android/tests/issue/IssueFilterTest.java
================================================
/*
* Copyright (c) 2015 PocketHub
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.github.pockethub.android.tests.issue;
import androidx.test.filters.SmallTest;
import com.github.pockethub.android.core.issue.IssueFilter;
import com.meisolsson.githubsdk.model.Milestone;
import com.meisolsson.githubsdk.model.Repository;
import com.meisolsson.githubsdk.model.User;
import org.junit.Test;
import java.util.UUID;
import static junit.framework.Assert.assertFalse;
import static junit.framework.TestCase.assertTrue;
import static org.junit.Assert.assertEquals;
/**
* Unit tests of {@link IssueFilter}
*/
@SmallTest
public class IssueFilterTest {
/**
* Verify {@link IssueFilter#equals(Object)}
*/
@Test
public void testEqualFilter() {
Repository repo = Repository.builder()
.id(1L)
.build();
IssueFilter filter1 = new IssueFilter(repo, UUID.randomUUID().toString());
assertFalse(filter1.equals(null));
assertFalse(filter1.equals(""));
assertTrue(filter1.equals(filter1));
IssueFilter filter2 = new IssueFilter(repo, UUID.randomUUID().toString());
assertEquals(filter1, filter2);
assertEquals(filter1.hashCode(), filter2.hashCode());
User user = User.builder()
.id(2L)
.build();
filter1.setAssignee(user);
assertFalse(filter1.equals(filter2));
filter2.setAssignee(user);
assertEquals(filter1, filter2);
assertEquals(filter1.hashCode(), filter2.hashCode());
filter1.setOpen(false);
assertFalse(filter1.equals(filter2));
filter2.setOpen(false);
assertEquals(filter1, filter2);
assertEquals(filter1.hashCode(), filter2.hashCode());
Milestone milestone = Milestone.builder()
.number(3)
.build();
filter1.setMilestone(milestone);
assertFalse(filter1.equals(filter2));
filter2.setMilestone(milestone);
assertEquals(filter1, filter2);
assertEquals(filter1.hashCode(), filter2.hashCode());
}
}
================================================
FILE: app/src/androidTest/java/com/github/pockethub/android/tests/issue/IssueStoreTest.java
================================================
/*
* Copyright (c) 2015 PocketHub
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.github.pockethub.android.tests.issue;
import androidx.test.filters.SmallTest;
import com.github.pockethub.android.core.issue.IssueStore;
import com.github.pockethub.android.util.InfoUtils;
import com.meisolsson.githubsdk.model.Issue;
import com.meisolsson.githubsdk.model.Repository;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotEquals;
import static org.junit.Assert.assertNull;
/**
* Unit tests of {@link IssueStore}
*/
@SmallTest
public class IssueStoreTest {
/**
* Verify issue is updated when re-added
*/
@Test
public void testReuseIssue() {
IssueStore store = new IssueStore();
Repository repo = InfoUtils.createRepoFromData("owner", "name");
assertNull(store.getIssue(repo, 1));
Issue issue = Issue.builder()
.repository(repo)
.number(1)
.body("body")
.build();
assertEquals(issue, store.addIssue(issue));
assertEquals(issue, store.getIssue(repo, 1));
Issue issue2 = Issue.builder()
.repository(repo)
.number(1)
.body("body2")
.build();
assertNotEquals(issue, store.addIssue(issue2));
assertNotEquals(issue2.body(), issue.body());
assertNotEquals(issue, store.getIssue(repo, 1));
}
}
================================================
FILE: app/src/androidTest/java/com/github/pockethub/android/tests/issue/IssueUriMatcherTest.java
================================================
/*
* Copyright (c) 2015 PocketHub
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.github.pockethub.android.tests.issue;
import android.net.Uri;
import androidx.test.filters.SmallTest;
import com.github.pockethub.android.core.issue.IssueUriMatcher;
import com.meisolsson.githubsdk.model.Issue;
import org.junit.Test;
import static junit.framework.Assert.assertNotNull;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
/**
* Unit tests of {@link IssueUriMatcher}
*/
@SmallTest
public class IssueUriMatcherTest {
/**
* Verify empty uri
*/
@Test
public void testEmptyUri() {
assertNull(IssueUriMatcher.getIssue(Uri.parse("")));
}
/**
* Verify non-numeric issue number in uri
*/
@Test
public void testNonNumericIssueNumber() {
assertNull(IssueUriMatcher.getIssue(Uri
.parse("https://github.com/defunkt/resque/issues/fourty")));
}
/**
* Verify http uri
*/
@Test
public void testHttpUri() {
Issue issue = IssueUriMatcher.getIssue(Uri
.parse("https://github.com/defunkt/resque/issues/3"));
assertNotNull(issue);
assertEquals(3, issue.number().intValue());
assertNotNull(issue.repository());
assertEquals("resque", issue.repository().name());
assertNotNull(issue.repository().owner());
assertEquals("defunkt", issue.repository().owner().login());
}
/**
* Verify pull uri
*/
@Test
public void testPullUri() {
Issue issue = IssueUriMatcher.getIssue(Uri
.parse("https://github.com/defunkt/resque/pull/3"));
assertNotNull(issue);
assertEquals(3, issue.number().intValue());
assertNotNull(issue.repository());
assertEquals("resque", issue.repository().name());
assertNotNull(issue.repository().owner());
assertEquals("defunkt", issue.repository().owner().login());
}
/**
* Verify https uri
*/
@Test
public void testHttpsUri() {
Issue issue = IssueUriMatcher.getIssue(Uri
.parse("http://github.com/defunkt/resque/issues/15"));
assertNotNull(issue);
assertEquals(15, issue.number().intValue());
assertNotNull(issue.repository());
assertEquals("resque", issue.repository().name());
assertNotNull(issue.repository().owner());
assertEquals("defunkt", issue.repository().owner().login());
}
/**
* Verify uri with comment fragment
*/
@Test
public void testCommentUri() {
Issue issue = IssueUriMatcher
.getIssue(Uri
.parse("https://github.com/defunkt/resque/issues/300#issuecomment-123456"));
assertNotNull(issue);
assertEquals(300, issue.number().intValue());
assertNotNull(issue.repository());
assertEquals("resque", issue.repository().name());
assertNotNull(issue.repository().owner());
assertEquals("defunkt", issue.repository().owner().login());
}
}
================================================
FILE: app/src/androidTest/java/com/github/pockethub/android/tests/ref/RefUtilsTest.java
================================================
/*
* Copyright (c) 2015 PocketHub
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.github.pockethub.android.tests.ref;
import androidx.test.filters.SmallTest;
import com.github.pockethub.android.core.ref.RefUtils;
import com.meisolsson.githubsdk.model.git.GitReference;
import org.junit.Test;
import static junit.framework.Assert.assertFalse;
import static junit.framework.TestCase.assertTrue;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
/**
* Tests of {@link RefUtils}
*/
@SmallTest
public class RefUtilsTest {
/**
* Verify {@link RefUtils#isBranch(GitReference)}
*/
@Test
public void testIsBranch() {
assertFalse(RefUtils.isBranch(null));
assertFalse(RefUtils.isBranch(GitReference.builder().build()));
assertFalse(RefUtils.isBranch(createGitReference("")));
assertFalse(RefUtils.isBranch(createGitReference("navigation_drawer_header_background")));
assertFalse(RefUtils.isBranch(createGitReference("refs/tags/v1")));
assertFalse(RefUtils.isBranch(createGitReference("refs/b1")));
assertTrue(RefUtils.isBranch(createGitReference("refs/heads/b2")));
}
/**
* Verify {@link RefUtils#isTag(GitReference)}
*/
@Test
public void testIsTag() {
assertFalse(RefUtils.isTag((GitReference) null));
assertFalse(RefUtils.isTag(GitReference.builder().build()));
assertFalse(RefUtils.isTag(createGitReference("")));
assertFalse(RefUtils.isTag(createGitReference("navigation_drawer_header_background")));
assertFalse(RefUtils.isTag(createGitReference("refs/b1")));
assertFalse(RefUtils.isTag(createGitReference("refs/heads/b2")));
assertTrue(RefUtils.isTag(createGitReference("refs/tags/v1")));
}
/**
* Verify {@link RefUtils#isValid(GitReference)}
*/
@Test
public void testIsValid() {
assertFalse(RefUtils.isValid(null));
assertFalse(RefUtils.isValid(GitReference.builder().build()));
assertFalse(RefUtils.isValid(createGitReference("")));
assertFalse(RefUtils.isValid(createGitReference("refs/pull/6/merge")));
assertFalse(RefUtils.isValid(createGitReference("refs/pull/6/head")));
assertTrue(RefUtils.isValid(createGitReference("refs/pull")));
assertTrue(RefUtils.isValid(createGitReference("refs/heads/b1")));
assertTrue(RefUtils.isValid(createGitReference("refs/tags/v1")));
}
/**
* Verify {@link RefUtils#getName(GitReference)}
*/
@Test
public void testGetName() {
assertNull(RefUtils.getName((GitReference) null));
assertNull(RefUtils.getName(GitReference.builder().build()));
assertEquals("", RefUtils.getName(createGitReference("")));
assertEquals("unchanged",
RefUtils.getName(createGitReference("unchanged")));
assertEquals("branch",
RefUtils.getName(createGitReference("refs/heads/branch")));
assertEquals("tag",
RefUtils.getName(createGitReference("refs/tags/tag")));
assertEquals("notes",
RefUtils.getName(createGitReference("refs/notes")));
}
/**
* Verify {@link RefUtils#getPath(GitReference)}
*/
@Test
public void testGetPath() {
assertNull(RefUtils.getPath(null));
assertNull(RefUtils.getPath(GitReference.builder().build()));
assertEquals("", RefUtils.getPath(createGitReference("")));
assertEquals("unchanged",
RefUtils.getPath(createGitReference("unchanged")));
assertEquals("heads/branch",
RefUtils.getPath(createGitReference("refs/heads/branch")));
assertEquals("tags/tag",
RefUtils.getPath(createGitReference("refs/tags/tag")));
assertEquals("notes",
RefUtils.getPath(createGitReference("refs/notes")));
}
private GitReference createGitReference(String ref){
return GitReference.builder()
.ref(ref)
.build();
}
}
================================================
FILE: app/src/androidTest/java/com/github/pockethub/android/tests/repo/RecentRepositoriesTest.java
================================================
/*
* Copyright (c) 2015 PocketHub
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.github.pockethub.android.tests.repo;
import androidx.test.filters.SmallTest;
import com.github.pockethub.android.ui.repo.RecentRepositories;
import com.meisolsson.githubsdk.model.User;
import org.junit.Test;
import static androidx.test.InstrumentationRegistry.getTargetContext;
import static com.github.pockethub.android.ui.repo.RecentRepositories.MAX_SIZE;
import static junit.framework.Assert.assertFalse;
import static junit.framework.TestCase.assertTrue;
/**
* Unit tests of {@link RecentRepositories}
*/
@SmallTest
public class RecentRepositoriesTest {
/**
* Verify bad input
*/
@Test
public void testBadInput() {
User org = User.builder()
.id(20L)
.build();
RecentRepositories recent = new RecentRepositories(getTargetContext(), org);
assertFalse(recent.contains(null));
assertFalse(recent.contains(-1));
}
/**
* Verify eviction
*/
@Test
public void testMaxReached() {
User org = User.builder()
.id(20L)
.build();
RecentRepositories recent = new RecentRepositories(getTargetContext(), org);
for (int i = 0; i < MAX_SIZE; i++) {
recent.add(i);
assertTrue(recent.contains(i));
}
recent.add(MAX_SIZE + 1);
assertTrue(recent.contains(MAX_SIZE + 1));
assertFalse(recent.contains(0));
for (int i = 1; i < MAX_SIZE; i++) {
assertTrue(recent.contains(i));
}
}
/**
* Verify input/output to disk of {@link RecentRepositories} state
*/
@Test
public void testIO() {
User org = User.builder()
.id(20L)
.build();
RecentRepositories recent1 = new RecentRepositories(getTargetContext(), org);
long id = 1234;
recent1.add(id);
assertTrue(recent1.contains(id));
recent1.save();
RecentRepositories recent2 = new RecentRepositories(getTargetContext(), org);
assertTrue(recent2.contains(id));
}
/**
* Verify repositories are scoped to organization
*/
@Test
public void testScopedStorage() {
User org1 = User.builder()
.id(20L)
.build();
RecentRepositories recent1 = new RecentRepositories(getTargetContext(), org1);
long id1 = 1234;
recent1.add(id1);
assertTrue(recent1.contains(id1));
User org2 = User.builder()
.id(40L)
.build();
RecentRepositories recent2 = new RecentRepositories(getTargetContext(), org2);
assertFalse(recent2.contains(id1));
long id2 = 2345;
recent2.add(id2);
assertTrue(recent2.contains(id2));
recent2.save();
recent1 = new RecentRepositories(getTargetContext(), org1);
assertFalse(recent1.contains(id2));
}
}
================================================
FILE: app/src/androidTest/java/com/github/pockethub/android/tests/repo/RepositoryEventMatcherTest.java
================================================
/*
* Copyright (c) 2015 PocketHub
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.github.pockethub.android.tests.repo;
import androidx.test.filters.SmallTest;
import com.github.pockethub.android.core.repo.RepositoryEventMatcher;
import com.meisolsson.githubsdk.model.GitHubEvent;
import com.meisolsson.githubsdk.model.GitHubEventType;
import com.meisolsson.githubsdk.model.Repository;
import com.meisolsson.githubsdk.model.User;
import com.meisolsson.githubsdk.model.payload.ForkPayload;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
/**
* Unit tests of {@link RepositoryEventMatcher}
*/
@SmallTest
public class RepositoryEventMatcherTest {
/**
* Test fork event that has an incomplete forkee in the payload
*/
@Test
public void testIncompleteRepositoryFork() {
RepositoryEventMatcher matcher = new RepositoryEventMatcher();
ForkPayload payload = ForkPayload.builder().build();
GitHubEvent event = GitHubEvent.builder()
.type(GitHubEventType.ForkEvent)
.payload(payload)
.build();
assertNull(matcher.getRepository(event));
Repository repository = Repository.builder().build();
payload = payload.toBuilder().forkee(repository).build();
event = event.toBuilder().payload(payload).build();
assertNull(matcher.getRepository(event));
repository = repository.toBuilder().name("repo").build();
payload = payload.toBuilder().forkee(repository).build();
event = event.toBuilder().payload(payload).build();
assertNull(matcher.getRepository(event));
User user = User.builder().build();
repository = repository.toBuilder().owner(user).build();
payload = payload.toBuilder().forkee(repository).build();
event = event.toBuilder().payload(payload).build();
assertNull(matcher.getRepository(event));
user = user.toBuilder().login("owner").build();
repository = repository.toBuilder().owner(user).build();
payload = payload.toBuilder().forkee(repository).build();
event = event.toBuilder().payload(payload).build();
assertEquals(repository, matcher.getRepository(event));
}
}
================================================
FILE: app/src/androidTest/java/com/github/pockethub/android/tests/repo/RepositoryUriMatcherTest.java
================================================
/*
* Copyright (c) 2015 PocketHub
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.github.pockethub.android.tests.repo;
import android.net.Uri;
import com.github.pockethub.android.core.repo.RepositoryUriMatcher;
import com.meisolsson.githubsdk.model.Repository;
import org.junit.Test;
import static junit.framework.Assert.assertNotNull;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
/**
* Unit tests of {@link RepositoryUriMatcher}
*/
public class RepositoryUriMatcherTest {
/**
* Verity empty uri
*/
@Test
public void testEmptyUri() {
assertNull(RepositoryUriMatcher.getRepository(Uri.parse("")));
}
/**
* Verify URI with no owner
*/
@Test
public void testUriWithNoOnwer() {
assertNull(RepositoryUriMatcher.getRepository(Uri
.parse("http://github.com")));
assertNull(RepositoryUriMatcher.getRepository(Uri
.parse("http://github.com/")));
assertNull(RepositoryUriMatcher.getRepository(Uri
.parse("http://github.com//")));
}
/**
* Verify URI with owner but no name
*/
@Test
public void testUriWithNoName() {
assertNull(RepositoryUriMatcher.getRepository(Uri
.parse("http://github.com/defunkt")));
assertNull(RepositoryUriMatcher.getRepository(Uri
.parse("http://github.com/defunkt/")));
}
/**
* Verify URI with owner but no name
*/
@Test
public void testHttpUriWithOwnerAndName() {
Repository repo = RepositoryUriMatcher.getRepository(Uri
.parse("http://github.com/defunkt/resque"));
assertNotNull(repo);
assertEquals("resque", repo.name());
assertNotNull(repo.owner());
assertEquals("defunkt", repo.owner().login());
}
/**
* Verify URI with owner but no name
*/
@Test
public void testHttpsUriWithOwnerAndName() {
Repository repo = RepositoryUriMatcher.getRepository(Uri
.parse("https://github.com/mojombo/jekyll"));
assertNotNull(repo);
assertEquals("jekyll", repo.name());
assertNotNull(repo.owner());
assertEquals("mojombo", repo.owner().login());
}
/**
* Verify URI with white-listed owner
*/
@Test
public void testInvalidOwner() {
assertNull(RepositoryUriMatcher.getRepository(Uri
.parse("http://github.com/blog/page1")));
}
}
================================================
FILE: app/src/androidTest/java/com/github/pockethub/android/tests/repo/SearchActivityTest.java
================================================
/*
* Copyright (c) 2015 PocketHub
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.github.pockethub.android.tests.repo;
import android.content.Intent;
import androidx.test.rule.ActivityTestRule;
import com.github.pockethub.android.ui.search.SearchActivity;
import org.junit.Before;
import org.junit.Rule;
import static android.app.SearchManager.QUERY;
import static android.content.Intent.ACTION_SEARCH;
/**
* Tests of {@link SearchActivity}
*/
public class SearchActivityTest {
@Rule
public ActivityTestRule<SearchActivity> activityTestRule =
new ActivityTestRule<>(SearchActivity.class);
@Before
public void setUp() {
Intent intent = new Intent(ACTION_SEARCH)
.putExtra(QUERY, "navigation_drawer_header_background");
activityTestRule.launchActivity(intent);
}
}
================================================
FILE: app/src/androidTest/java/com/github/pockethub/android/tests/user/UserComparatorTest.java
================================================
/*
* Copyright (c) 2015 PocketHub
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.github.pockethub.android.tests.user;
import android.accounts.Account;
import androidx.test.filters.SmallTest;
import com.github.pockethub.android.core.user.UserComparator;
import com.meisolsson.githubsdk.model.User;
import org.junit.Test;
import static junit.framework.TestCase.assertTrue;
import static org.junit.Assert.assertEquals;
/**
* Unit tests of {@link UserComparator}
*/
@SmallTest
public class UserComparatorTest {
/**
* Test sorting of users that match login
*/
@Test
public void testLoginMatch() {
Account account = new Account("m", "t");
UserComparator comparator = new UserComparator(account);
assertTrue(comparator.compare(createUser("m"),
createUser("a")) < 0);
assertTrue(comparator.compare(createUser("a"),
createUser("m")) > 0);
assertTrue(comparator.compare(createUser("m"),
createUser("z")) < 0);
assertTrue(comparator.compare(createUser("z"),
createUser("m")) > 0);
assertEquals(
0,
comparator.compare(createUser("m"),
createUser("m")));
}
/**
* Test sorting of users that don't match login
*/
@Test
public void testNoLoginMatch() {
Account account = new Account("m", "t");
UserComparator comparator = new UserComparator(account);
assertTrue(comparator.compare(createUser("a"),
createUser("c")) < 0);
assertTrue(comparator.compare(createUser("db"),
createUser("da")) > 0);
}
private User createUser(String login){
return User.builder()
.login(login)
.build();
}
}
================================================
FILE: app/src/androidTest/java/com/github/pockethub/android/tests/user/UserUriMatcherTest.java
================================================
/*
* Copyright (c) 2015 PocketHub
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.github.pockethub.android.tests.user;
import android.net.Uri;
import com.github.pockethub.android.core.user.UserUriMatcher;
import com.meisolsson.githubsdk.model.User;
import org.junit.Test;
import static junit.framework.Assert.assertNotNull;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
/**
* Unit tests of {@link UserUriMatcher}
*/
public class UserUriMatcherTest {
/**
* Verify empty URI
*/
@Test
public void testEmptyUri() {
assertNull(UserUriMatcher.getUser(Uri.parse("")));
}
/**
* Verify no name
*/
@Test
public void testUriWithNoName() {
assertNull(UserUriMatcher.getUser(Uri.parse("http://github.com")));
assertNull(UserUriMatcher.getUser(Uri.parse("https://github.com")));
assertNull(UserUriMatcher.getUser(Uri.parse("http://github.com/")));
assertNull(UserUriMatcher.getUser(Uri.parse("http://github.com//")));
}
/**
* Verify URI with name
*/
@Test
public void testHttpUriWithName() {
User user = UserUriMatcher.getUser(Uri
.parse("http://github.com/defunkt"));
assertNotNull(user);
assertEquals("defunkt", user.login());
}
/**
* Verify URI with name
*/
@Test
public void testHttpsUriWithName() {
User user = UserUriMatcher.getUser(Uri
.parse("https://github.com/mojombo"));
assertNotNull(user);
assertEquals("mojombo", user.login());
}
/**
* Verify URI with name
*/
@Test
public void testUriWithTrailingSlash() {
User user = UserUriMatcher.getUser(Uri
.parse("http://github.com/defunkt/"));
assertNotNull(user);
assertEquals("defunkt", user.login());
}
/**
* Verify URI with name
*/
@Test
public void testUriWithTrailingSlashes() {
User user = UserUriMatcher.getUser(Uri
.parse("http://github.com/defunkt//"));
assertNotNull(user);
assertEquals("defunkt", user.login());
}
}
================================================
FILE: app/src/androidTest/java/com/github/pockethub/android/tests/util/HtmlUtilsTest.java
================================================
/*
* Copyright (c) 2015 PocketHub
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.github.pockethub.android.tests.util;
import com.github.pockethub.android.util.HtmlUtils;
import org.junit.Test;
import static junit.framework.Assert.assertNotNull;
import static org.junit.Assert.assertEquals;
/**
* Unit tests of HTML conversions done when rendering markdown
*/
public class HtmlUtilsTest {
private String format(String html) {
CharSequence formatted = HtmlUtils.format(html);
assertNotNull(formatted);
return formatted.toString().replace("<githubroot>", "")
.replace("</githubroot>", "");
}
/**
* Single email toggle span is removed
*/
@Test
public void testToggleRemoved() {
String html = "before <span class=\"email-hidden-toggle\"><a href=\"#\">…</a></span>after";
assertEquals("before after", format(html));
}
/**
* Multiple email toggle spans are removed
*/
@Test
public void testTogglesRemoved() {
String html = "before <span class=\"email-hidden-toggle\"><a href=\"#\">…</a></span>after<span class=\"email-hidden-toggle\"><a href=\"#\">…</a></span>";
assertEquals("before after", format(html));
}
/**
* Email div is transformed into block quote
*/
@Test
public void testEmailQuoted() {
String html = "before <div class=\"email-quoted-reply\">quoted</div> after";
assertEquals("before <blockquote>quoted</blockquote> after",
format(html));
}
/**
* Email fragment div is removed and newlines are replaced with br tags
*/
@Test
public void testEmailFragment() {
String html = "before <div class=\"email-fragment\">in\nside</div> after";
assertEquals("before in<br>side after", format(html));
}
/**
* Email fragment div is removed and newlines are replaced with br tags
*/
@Test
public void testEmailFragments() {
String html = "before <div class=\"email-fragment\">in\nside</div> after <div class=\"email-fragment\">out\nside</div>";
assertEquals("before in<br>side after out<br>side", format(html));
}
/**
* Email fragment div is removed and newlines are replaced with br tags
*/
@Test
public void testTrailingEmailFragment() {
String html = "before <div class=\"email-fragment\">in\nside</div>";
assertEquals("before in<br>side", format(html));
}
/**
* Leading break is removed
*/
@Test
public void testLeadingBreak() {
String html = "<br>content";
assertEquals("content", format(html));
}
/**
* Trailing break is removed
*/
@Test
public void testTrailingBreak() {
String html = "content<br>";
assertEquals("content", format(html));
}
/**
* Leading & trailing breaks are removed
*/
@Test
public void testWrappedBreaks() {
String html = "<br>content<br>";
assertEquals("content", format(html));
}
/**
* Leading & trailing breaks are removed
*/
@Test
public void testWrappedParagraphs() {
String html = "<p>content</p>";
assertEquals("content", format(html));
}
/**
* Paragraph replaced with break
*/
@Test
public void testParagraphReplacedWithBreak() {
String html = "line1<p>line2</p>";
assertEquals("line1<br>line2", format(html));
}
/**
* em tags replaced with i tags
*/
@Test
public void testEmReplacedWithI() {
String html = "a<em>b</em>c";
assertEquals(html, format(html));
}
/**
* strong tags replaced with b tags
*/
@Test
public void testStrongReplacedWithB() {
String html = "<strong>a</strong>";
assertEquals(html, format(html));
}
/**
* Leading whitespace is removed
*/
@Test
public void testLeadingWhitespace() {
String html = " content";
assertEquals("content", format(html));
}
/**
* Trailing whitespace is removed
*/
@Test
public void testTrailingWhitespace() {
String html = "content ";
assertEquals("content", format(html));
}
/**
* Leading & trailing whitespace is removed
*/
@Test
public void testWrappedWhitetspace() {
String html = " content ";
assertEquals("content", format(html));
}
/**
* Pre untouched
*/
@Test
public void testPreWithNoWhitespace() {
String html = "a<pre>b</pre> c";
assertEquals("a<pre>b</pre> c", format(html));
}
/**
* Pre space escaped
*/
@Test
public void testPreWithSpaces() {
String html = "a<pre> b</pre> c";
assertEquals("a<pre> b</pre> c", format(html));
}
/**
* Pre tab escaped
*/
@Test
public void testPreWithTabs() {
String html = "a<pre>\tb</pre> c";
assertEquals("a<pre> b</pre> c", format(html));
}
/**
* Pre newline escaped
*/
@Test
public void testPreWithNewline() {
String html = "a<pre>\nb</pre> c";
assertEquals("a<pre><br>b</pre> c", format(html));
}
/**
* Pre space, tab, and newline escaped
*/
@Test
public void testPreWithAllWhitepsace() {
String html = "a<pre>\nb\tc </pre>d";
assertEquals("a<pre><br>b c </pre>d",
format(html));
}
/**
* Multiple pre elements escaped
*/
@Test
public void testMultiplePresEscaped() {
String html = "a<pre> c </pre>d<pre>\te\t</pre>";
assertEquals(
"a<pre> c </pre>d<pre> e </pre>",
format(html));
}
/**
* Single code element inside a pre element
*/
@Test
public void testFormatPreCodeOnly() {
String html = "<pre><code>a\nb\nc\n</code></pre>";
assertEquals("<pre><code>a<br>b<br>c</code></pre>", format(html));
}
}
================================================
FILE: app/src/debug/res/values/strings.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name" translatable="false">PocketHub Debug</string>
</resources>
================================================
FILE: app/src/main/AndroidManifest.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.github.pockethub.android">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
<uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />
<uses-permission android:name="android.permission.READ_SYNC_SETTINGS" />
<uses-permission android:name="android.permission.READ_SYNC_STATS" />
<uses-permission android:name="android.permission.USE_CREDENTIALS" />
<uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<supports-screens
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true"
android:xlargeScreens="true" />
<application
android:allowBackup="true"
android:hardwareAccelerated="false"
android:icon="@drawable/app_icon"
android:supportsRtl="true"
android:label="@string/app_name"
android:theme="@style/Theme.PocketHub"
android:name=".PocketHub"
android:usesCleartextTraffic="true">
<activity
android:name=".ui.MainActivity"
android:theme="@style/Theme.PocketHub.NavigationDrawer"
android:configChanges="orientation|keyboardHidden|screenSize"
android:hardwareAccelerated="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<meta-data
android:name="android.app.default_searchable"
android:value="com.github.pockethub.android.ui.search.SearchActivity" />
</activity>
<activity
android:name=".ui.gist.CreateGistActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:label="@string/create_gist"
android:parentActivityName=".ui.MainActivity"
tools:ignore="UnusedAttribute">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.github.pockethub.android.ui.MainActivity" />
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/*" />
</intent-filter>
</activity>
<activity
android:name=".ui.notification.NotificationActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:parentActivityName=".ui.MainActivity"
android:hardwareAccelerated="true"
tools:ignore="UnusedAttribute">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.github.pockethub.android.ui.MainActivity" />
</activity>
<activity
android:name=".ui.issue.IssueBrowseActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:hardwareAccelerated="true">
<intent-filter>
<action android:name="${applicationId}.repo.issues.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<meta-data
android:name="android.app.default_searchable"
android:value="com.github.pockethub.android.ui.issue.IssueSearchActivity" />
</activity>
<activity
android:name=".ui.issue.EditIssuesFilterActivity"
android:configChanges="orientation|keyboardHidden|screenSize">
<intent-filter>
<action android:name="${applicationId}.repo.issues.filter.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity
android:name=".ui.issue.EditIssueActivity"
android:configChanges="orientation|keyboardHidden|screenSize">
<intent-filter>
<action android:name="${applicationId}.repo.issues.edit.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity
android:name=".ui.search.SearchActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:hardwareAccelerated="true"
android:label="@string/search_title"
android:launchMode="singleTop">
<intent-filter>
<action android:name="android.intent.action.SEARCH" />
</intent-filter>
<meta-data
android:name="android.app.searchable"
android:resource="@xml/searchable_repos_users" />
</activity>
<activity
android:name=".ui.issue.FiltersViewActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:hardwareAccelerated="true">
<intent-filter>
<action android:name="${applicationId}.repo.issues.filters.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity
android:name=".ui.gist.GistsViewActivity"
android:configChanges="orientation|keyboardHidden|screenSize">
<intent-filter>
<action android:name="${applicationId}.gists.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity
android:name=".ui.gist.GistFilesViewActivity"
android:configChanges="orientation|keyboardHidden|screenSize">
<intent-filter>
<action android:name="${applicationId}.gist.files.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity
android:name=".ui.issue.CreateCommentActivity"
android:configChanges="orientation|keyboardHidden|screenSize">
<intent-filter>
<action android:name="${applicationId}.issue.comment.create.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity
android:name=".ui.issue.EditCommentActivity"
android:configChanges="orientation|keyboardHidden|screenSize">
<intent-filter>
<action android:name="${applicationId}.issue.comment.edit.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity
android:name=".ui.gist.CreateCommentActivity"
android:configChanges="orientation|keyboardHidden|screenSize">
<intent-filter>
<action android:name="${applicationId}.gist.comment.create.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity
android:name=".ui.gist.EditCommentActivity"
android:configChanges="orientation|keyboardHidden|screenSize">
<intent-filter>
<action android:name="${applicationId}.gist.comment.edit.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity
android:name=".ui.commit.CreateCommentActivity"
android:configChanges="orientation|keyboardHidden|screenSize">
<intent-filter>
<action android:name="${applicationId}.commit.comment.create.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity
android:name=".ui.repo.RepositoryViewActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:hardwareAccelerated="true">
<intent-filter>
<action android:name="${applicationId}.repo.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<meta-data
android:name="android.app.default_searchable"
android:value="com.github.pockethub.android.ui.issue.IssueSearchActivity" />
</activity>
<activity
android:name=".ui.repo.RepositoryContributorsActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:hardwareAccelerated="true">
<intent-filter>
<action android:name="${applicationId}.repo.contributors.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity
android:name=".ui.user.UserViewActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:hardwareAccelerated="true">
<intent-filter>
<action android:name="${applicationId}.user.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity
android:name=".ui.issue.IssuesViewActivity"
android:configChanges="orientation|keyboardHidden|screenSize">
<intent-filter>
<action android:name="${applicationId}.issues.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<service
android:name=".accounts.AccountAuthenticatorService"
android:exported="false"
android:process=":auth">
<intent-filter>
<action android:name="android.accounts.AccountAuthenticator" />
</intent-filter>
<meta-data
android:name="android.accounts.AccountAuthenticator"
android:resource="@xml/authenticator" />
</service>
<activity
android:name=".accounts.LoginActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:launchMode="singleTop">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<data android:scheme="@string/github_oauth_scheme" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
</intent-filter>
</activity>
<activity
android:name=".ui.user.UriLauncherActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:excludeFromRecents="true">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
<data
android:host="github.com"
android:scheme="http" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
<data
android:host="github.com"
android:scheme="https" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
<data
android:host="gist.github.com"
android:scheme="http" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
<data
android:host="gist.github.com"
android:scheme="https" />
</intent-filter>
</activity>
<activity
android:name=".ui.issue.IssueSearchActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:hardwareAccelerated="true"
android:label="@string/search_title"
android:launchMode="singleTop">
<intent-filter>
<action android:name="android.intent.action.SEARCH" />
</intent-filter>
<meta-data
android:name="android.app.searchable"
android:resource="@xml/searchable_issues" />
</activity>
<activity
android:name=".ui.commit.CommitCompareViewActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:label="@string/commit_compare_title">
<intent-filter>
<action android:name="${applicationId}.commits.compare.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity
android:name=".ui.commit.CommitViewActivity"
android:configChanges="orientation|keyboardHidden|screenSize">
<intent-filter>
<action android:name="${applicationId}.commits.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity
android:name=".ui.commit.CommitFileViewActivity"
android:configChanges="orientation|keyboardHidden|screenSize">
<intent-filter>
<action android:name="${applicationId}.commit.file.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity
android:name=".ui.ref.BranchFileViewActivity"
android:configChanges="orientation|keyboardHidden|screenSize">
<intent-filter>
<action android:name="${applicationId}.branch.file.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity android:name=".accounts.LoginWebViewActivity"
android:launchMode="singleTop"
android:configChanges="orientation|keyboardHidden|screenSize" />
<service
android:name=".sync.SyncAdapterService"
android:exported="false"
android:process=":repos">
<intent-filter>
<action android:name="android.content.SyncAdapter" />
</intent-filter>
<meta-data
android:name="android.content.SyncAdapter"
android:resource="@xml/sync_adapter" />
</service>
<provider
android:name=".sync.ContentProviderAdapter"
android:authorities="@string/provider_authority_sync"
android:exported="false"
android:label="@string/app_name"
android:syncable="true" />
<provider
android:name=".ui.search.RepositorySearchSuggestionsProvider"
android:authorities="@string/provider_authority_search_suggest_repos"
android:exported="false" />
<provider
android:name=".ui.issue.IssueSearchSuggestionsProvider"
android:authorities="@string/provider_authority_search_suggest_issues"
android:exported="false" />
<meta-data
android:name="com.alorma.github.sdk.client"
android:value="@string/github_client"/>
<meta-data
android:name="com.alorma.github.sdk.secret"
android:value="@string/github_secret"/>
<meta-data
android:name="com.alorma.github.sdk.oauth"
android:value="@string/github_oauth"/>
<meta-data
android:name="com.bugsnag.android.API_KEY"
android:value="@string/bugsnag_api_key"/>
</application>
</manifest>
================================================
FILE: app/src/main/assets/code_mirror/LICENSE
================================================
The MIT License (MIT)
Copyright (c) 2016 Marijn Haverbeke <marijnh@gmail.com> and others
Copyright (c) 2016 Michael Zhou <zhoumotongxue008@gmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
================================================
FILE: app/src/main/assets/code_mirror/VERSION
================================================
5.19.0-minified
================================================
FILE: app/src/main/assets/code_mirror/addon/comment/comment.js
================================================
'use strict';(function(h){"object"==typeof exports&&"object"==typeof module?h(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],h):h(CodeMirror)})(function(h){function w(a){a=a.search(q);return-1==a?0:a}function D(a,d,b){return/\bstring\b/.test(a.getTokenTypeAt(k(d.line,0)))&&!/^[\'\"`]/.test(b)}var A={},q=/[^\s\u00a0]/,k=h.Pos;h.commands.toggleComment=function(a){a.toggleComment()};h.defineExtension("toggleComment",function(a){a||(a=A);for(var d=
Infinity,b=this.listSelections(),c=null,e=b.length-1;0<=e;e--){var f=b[e].from(),g=b[e].to();f.line>=d||(g.line>=d&&(g=k(d,0)),d=f.line,null==c?this.uncomment(f,g,a)?c="un":(this.lineComment(f,g,a),c="line"):"un"==c?this.uncomment(f,g,a):this.lineComment(f,g,a))}});h.defineExtension("lineComment",function(a,d,b){b||(b=A);var c=this,e=c.getModeAt(a),f=c.getLine(a.line);if(null!=f&&!D(c,a,f)){var g=b.lineComment||e.lineComment;if(g){var m=Math.min(0!=d.ch||d.line==a.line?d.line+1:d.line,c.lastLine()+
1),h=null==b.padding?" ":b.padding,l=b.commentBlankLines||a.line==d.line;c.operation(function(){if(b.indent){for(var d=null,f=a.line;f<m;++f){var e=c.getLine(f),e=e.slice(0,w(e));if(null==d||d.length>e.length)d=e}for(f=a.line;f<m;++f){var e=c.getLine(f),n=d.length;if(l||q.test(e))e.slice(0,n)!=d&&(n=w(e)),c.replaceRange(d+g+h,k(f,0),k(f,n))}}else for(f=a.line;f<m;++f)(l||q.test(c.getLine(f)))&&c.replaceRange(g+h,k(f,0))})}else if(b.blockCommentStart||e.blockCommentStart)b.fullLines=!0,c.blockComment(a,
d,b)}});h.defineExtension("blockComment",function(a,d,b){b||(b=A);var c=this,e=c.getModeAt(a),f=b.blockCommentStart||e.blockCommentStart,g=b.blockCommentEnd||e.blockCommentEnd;if(!f||!g)(b.lineComment||e.lineComment)&&0!=b.fullLines&&c.lineComment(a,d,b);else if(!/\bcomment\b/.test(c.getTokenTypeAt(k(a.line,0)))){var m=Math.min(d.line,c.lastLine());m!=a.line&&0==d.ch&&q.test(c.getLine(m))&&--m;var h=null==b.padding?" ":b.padding;a.line>m||c.operation(function(){if(0!=b.fullLines){var l=q.test(c.getLine(m));
c.replaceRange(h+g,k(m));c.replaceRange(f+h,k(a.line,0));var x=b.blockCommentLead||e.blockCommentLead;if(null!=x)for(var p=a.line+1;p<=m;++p)(p!=m||l)&&c.replaceRange(x+h,k(p,0))}else c.replaceRange(g,d),c.replaceRange(f,a)})}});h.defineExtension("uncomment",function(a,d,b){b||(b=A);var c=this,e=c.getModeAt(a),f=Math.min(0!=d.ch||d.line==a.line?d.line:d.line-1,c.lastLine()),g=Math.min(a.line,f),h=b.lineComment||e.lineComment,w=[],l=null==b.padding?" ":b.padding,x;a:if(h){for(var p=g;p<=f;++p){var B=
c.getLine(p),n=B.indexOf(h);-1<n&&!/comment/.test(c.getTokenTypeAt(k(p,n+1)))&&(n=-1);if(-1==n&&q.test(B))break a;if(-1<n&&q.test(B.slice(0,n)))break a;w.push(B)}c.operation(function(){for(var a=g;a<=f;++a){var b=w[a-g],d=b.indexOf(h),e=d+h.length;0>d||(b.slice(e,e+l.length)==l&&(e+=l.length),x=!0,c.replaceRange("",k(a,d),k(a,e)))}});if(x)return!0}var t=b.blockCommentStart||e.blockCommentStart,u=b.blockCommentEnd||e.blockCommentEnd;if(!t||!u)return!1;var C=b.blockCommentLead||e.blockCommentLead,y=
c.getLine(g),z=y.indexOf(t);if(-1==z)return!1;var v=f==g?y:c.getLine(f),r=v.indexOf(u,f==g?z+t.length:0);-1==r&&g!=f&&(v=c.getLine(--f),r=v.indexOf(u));if(-1==r||!/comment/.test(c.getTokenTypeAt(k(g,z+1)))||!/comment/.test(c.getTokenTypeAt(k(f,r+1))))return!1;e=y.lastIndexOf(t,a.ch);b=-1==e?-1:y.slice(0,a.ch).indexOf(u,e+t.length);if(-1!=e&&-1!=b&&b+u.length!=a.ch)return!1;b=v.indexOf(u,d.ch);a=v.slice(d.ch).lastIndexOf(t,b-d.ch);e=-1==b||-1==a?-1:d.ch+a;if(-1!=b&&-1!=e&&e!=d.ch)return!1;c.operation(function(){c.replaceRange("",
k(f,r-(l&&v.slice(r-l.length,r)==l?l.length:0)),k(f,r+u.length));var a=z+t.length;l&&y.slice(a,a+l.length)==l&&(a+=l.length);c.replaceRange("",k(g,z),k(g,a));if(C)for(a=g+1;a<=f;++a){var b=c.getLine(a),d=b.indexOf(C);if(-1!=d&&!q.test(b.slice(0,d))){var e=d+C.length;l&&b.slice(e,e+l.length)==l&&(e+=l.length);c.replaceRange("",k(a,d),k(a,e))}}});return!0})});
================================================
FILE: app/src/main/assets/code_mirror/addon/comment/continuecomment.js
================================================
'use strict';(function(e){"object"==typeof exports&&"object"==typeof module?e(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)})(function(e){function q(b){if(b.getOption("disableInput"))return e.Pass;for(var d=b.listSelections(),a,l=[],m=0;m<d.length;m++){var f=d[m].head,g=b.getTokenAt(f);if("comment"!=g.type)return e.Pass;var c=e.innerMode(b.getMode(),g.state).mode;if(!a)a=c;else if(a!=c)return e.Pass;c=null;if(a.blockCommentStart&&
a.blockCommentContinue){var k=g.string.indexOf(a.blockCommentEnd),n=b.getRange(e.Pos(f.line,0),e.Pos(f.line,g.end)),h;if(!(-1!=k&&k==g.string.length-a.blockCommentEnd.length&&f.ch>=k))if(0==g.string.indexOf(a.blockCommentStart)){if(c=n.slice(0,g.start),!/^\s*$/.test(c))for(c="",k=0;k<g.start;++k)c+=" "}else-1!=(h=n.indexOf(a.blockCommentContinue))&&h+a.blockCommentContinue.length>g.start&&/^\s*$/.test(n.slice(0,h))&&(c=n.slice(0,h));null!=c&&(c+=a.blockCommentContinue)}null==c&&a.lineComment&&r(b)&&
(f=b.getLine(f.line),h=f.indexOf(a.lineComment),-1<h&&(c=f.slice(0,h),c=/\S/.test(c)?null:c+(a.lineComment+f.slice(h+a.lineComment.length).match(/^\s*/)[0])));if(null==c)return e.Pass;l[m]="\n"+c}b.operation(function(){for(var a=d.length-1;0<=a;a--)b.replaceRange(l[a],d[a].from(),d[a].to(),"+insert")})}function r(b){return(b=b.getOption("continueComments"))&&"object"==typeof b?!1!==b.continueLineComment:!0}for(var p=["clike","css","javascript"],l=0;l<p.length;++l)e.extendMode(p[l],{blockCommentContinue:" * "});
e.defineOption("continueComments",null,function(b,d,a){a&&a!=e.Init&&b.removeKeyMap("continueComment");d&&(a="Enter","string"==typeof d?a=d:"object"==typeof d&&d.key&&(a=d.key),d={name:"continueComment"},d[a]=q,b.addKeyMap(d))})});
================================================
FILE: app/src/main/assets/code_mirror/addon/dialog/dialog.css
================================================
.CodeMirror-dialog{position:absolute;left:0;right:0;background:inherit;z-index:15;padding:.1em .8em;overflow:hidden;color:inherit}.CodeMirror-dialog-top{border-bottom:1px solid #eee;top:0}.CodeMirror-dialog-bottom{border-top:1px solid #eee;bottom:0}.CodeMirror-dialog input{border:none;outline:0;background:0 0;width:20em;color:inherit;font-family:monospace}.CodeMirror-dialog button{font-size:70%}
================================================
FILE: app/src/main/assets/code_mirror/addon/dialog/dialog.js
================================================
'use strict';(function(c){"object"==typeof exports&&"object"==typeof module?c(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],c):c(CodeMirror)})(function(c){function l(a,c,b){a=a.getWrapperElement().appendChild(document.createElement("div"));a.className=b?"CodeMirror-dialog CodeMirror-dialog-bottom":"CodeMirror-dialog CodeMirror-dialog-top";"string"==typeof c?a.innerHTML=c:a.appendChild(c);return a}function m(a,c){a.state.currentNotificationClose&&
a.state.currentNotificationClose();a.state.currentNotificationClose=c}c.defineExtension("openDialog",function(a,g,b){function e(a){if("string"==typeof a)d.value=a;else if(!h&&(h=!0,f.parentNode.removeChild(f),k.focus(),b.onClose))b.onClose(f)}b||(b={});m(this,null);var f=l(this,a,b.bottom),h=!1,k=this,d=f.getElementsByTagName("input")[0];if(d){d.focus();b.value&&(d.value=b.value,!1!==b.selectValueOnOpen&&d.select());if(b.onInput)c.on(d,"input",function(a){b.onInput(a,d.value,e)});if(b.onKeyUp)c.on(d,
"keyup",function(a){b.onKeyUp(a,d.value,e)});c.on(d,"keydown",function(a){if(!(b&&b.onKeyDown&&b.onKeyDown(a,d.value,e))){if(27==a.keyCode||!1!==b.closeOnEnter&&13==a.keyCode)d.blur(),c.e_stop(a),e();13==a.keyCode&&g(d.value,a)}});if(!1!==b.closeOnBlur)c.on(d,"blur",e)}else if(a=f.getElementsByTagName("button")[0]){c.on(a,"click",function(){e();k.focus()});if(!1!==b.closeOnBlur)c.on(a,"blur",e);a.focus()}return e});c.defineExtension("openConfirm",function(a,g,b){function e(){h||(h=!0,f.parentNode.removeChild(f),
k.focus())}m(this,null);var f=l(this,a,b&&b.bottom);a=f.getElementsByTagName("button");var h=!1,k=this,d=1;a[0].focus();for(b=0;b<a.length;++b){var n=a[b];(function(a){c.on(n,"click",function(b){c.e_preventDefault(b);e();a&&a(k)})})(g[b]);c.on(n,"blur",function(){--d;setTimeout(function(){0>=d&&e()},200)});c.on(n,"focus",function(){++d})}});c.defineExtension("openNotification",function(a,g){function b(){f||(f=!0,clearTimeout(h),e.parentNode.removeChild(e))}m(this,b);var e=l(this,a,g&&g.bottom),f=
!1,h;a=g&&"undefined"!==typeof g.duration?g.duration:5E3;c.on(e,"click",function(a){c.e_preventDefault(a);b()});a&&(h=setTimeout(b,a));return b})});
================================================
FILE: app/src/main/assets/code_mirror/addon/display/autorefresh.js
================================================
'use strict';(function(c){"object"==typeof exports&&"object"==typeof module?c(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],c):c(CodeMirror)})(function(c){function f(b,a){function d(){b.display.wrapper.offsetHeight?(e(b,a),b.display.lastWrapHeight!=b.display.wrapper.clientHeight&&b.refresh()):a.timeout=setTimeout(d,a.delay)}a.timeout=setTimeout(d,a.delay);a.hurry=function(){clearTimeout(a.timeout);a.timeout=setTimeout(d,50)};c.on(window,"mouseup",
a.hurry);c.on(window,"keyup",a.hurry)}function e(b,a){clearTimeout(a.timeout);c.off(window,"mouseup",a.hurry);c.off(window,"keyup",a.hurry)}c.defineOption("autoRefresh",!1,function(b,a){b.state.autoRefresh&&(e(b,b.state.autoRefresh),b.state.autoRefresh=null);a&&0==b.display.wrapper.offsetHeight&&f(b,b.state.autoRefresh={delay:a.delay||250})})});
================================================
FILE: app/src/main/assets/code_mirror/addon/display/fullscreen.css
================================================
.CodeMirror-fullscreen{position:fixed;top:0;left:0;right:0;bottom:0;height:auto;z-index:9}
================================================
FILE: app/src/main/assets/code_mirror/addon/display/fullscreen.js
================================================
'use strict';(function(c){"object"==typeof exports&&"object"==typeof module?c(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],c):c(CodeMirror)})(function(c){c.defineOption("fullScreen",!1,function(d,a,b){b==c.Init&&(b=!1);!b!=!a&&(a?(a=d.getWrapperElement(),d.state.fullScreenRestore={scrollTop:window.pageYOffset,scrollLeft:window.pageXOffset,width:a.style.width,height:a.style.height},a.style.width="",a.style.height="auto",a.className+=" CodeMirror-fullscreen",
document.documentElement.style.overflow="hidden"):(a=d.getWrapperElement(),a.className=a.className.replace(/\s*CodeMirror-fullscreen\b/,""),document.documentElement.style.overflow="",b=d.state.fullScreenRestore,a.style.width=b.width,a.style.height=b.height,window.scrollTo(b.scrollLeft,b.scrollTop)),d.refresh())})});
================================================
FILE: app/src/main/assets/code_mirror/addon/display/panel.js
================================================
'use strict';(function(g){"object"==typeof exports&&"object"==typeof module?g(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],g):g(CodeMirror)})(function(g){function f(a,b,c,d){this.cm=a;this.node=b;this.options=c;this.height=d;this.cleared=!1}function h(a){var b=a.getWrapperElement(),c=window.getComputedStyle?window.getComputedStyle(b):b.currentStyle,d=parseInt(c.height),e=a.state.panels={setHeight:b.style.height,heightLeft:d,panels:0,wrapper:document.createElement("div")};
b.parentNode.insertBefore(e.wrapper,b);c=a.hasFocus();e.wrapper.appendChild(b);c&&a.focus();a._setSize=a.setSize;null!=d&&(a.setSize=function(b,c){if(null==c)return this._setSize(b,c);e.setHeight=c;if("number"!=typeof c){var f=/^(\d+\.?\d*)px$/.exec(c);f?c=Number(f[1]):(e.wrapper.style.height=c,c=e.wrapper.offsetHeight,e.wrapper.style.height="")}a._setSize(b,e.heightLeft+=c-d);d=c})}g.defineExtension("addPanel",function(a,b){b=b||{};this.state.panels||h(this);var c=this.state.panels,d=c.wrapper,e=
this.getWrapperElement();b.after instanceof f&&!b.after.cleared?d.insertBefore(a,b.before.node.nextSibling):b.before instanceof f&&!b.before.cleared?d.insertBefore(a,b.before.node):b.replace instanceof f&&!b.replace.cleared?(d.insertBefore(a,b.replace.node),b.replace.clear()):"bottom"==b.position?d.appendChild(a):"before-bottom"==b.position?d.insertBefore(a,e.nextSibling):"after-top"==b.position?d.insertBefore(a,e):d.insertBefore(a,d.firstChild);d=b&&b.height||a.offsetHeight;this._setSize(null,c.heightLeft-=
d);c.panels++;return new f(this,a,b,d)});f.prototype.clear=function(){if(!this.cleared){this.cleared=!0;var a=this.cm.state.panels;this.cm._setSize(null,a.heightLeft+=this.height);a.wrapper.removeChild(this.node);if(0==--a.panels){var a=this.cm,b=a.state.panels;a.state.panels=null;var c=a.getWrapperElement();b.wrapper.parentNode.replaceChild(c,b.wrapper);c.style.height=b.setHeight;a.setSize=a._setSize;a.setSize()}}};f.prototype.changed=function(a){a=null==a?this.node.offsetHeight:a;this.cm._setSize(null,
this.cm.state.panels.height+=a-this.height);this.height=a}});
================================================
FILE: app/src/main/assets/code_mirror/addon/display/placeholder.js
================================================
'use strict';(function(d){"object"==typeof exports&&"object"==typeof module?d(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],d):d(CodeMirror)})(function(d){function f(a){a.state.placeholder&&(a.state.placeholder.parentNode.removeChild(a.state.placeholder),a.state.placeholder=null)}function h(a){f(a);var c=a.state.placeholder=document.createElement("pre");c.style.cssText="height: 0; overflow: visible";c.className="CodeMirror-placeholder";var b=
a.getOption("placeholder");"string"==typeof b&&(b=document.createTextNode(b));c.appendChild(b);a.display.lineSpace.insertBefore(c,a.display.lineSpace.firstChild)}function g(a){k(a)&&h(a)}function e(a){var c=a.getWrapperElement(),b=k(a);c.className=c.className.replace(" CodeMirror-empty","")+(b?" CodeMirror-empty":"");b?h(a):f(a)}function k(a){return 1===a.lineCount()&&""===a.getLine(0)}d.defineOption("placeholder","",function(a,c,b){b=b&&b!=d.Init;c&&!b?(a.on("blur",g),a.on("change",e),a.on("swapDoc",
e),e(a)):!c&&b&&(a.off("blur",g),a.off("change",e),a.off("swapDoc",e),f(a),b=a.getWrapperElement(),b.className=b.className.replace(" CodeMirror-empty",""));c&&!a.hasFocus()&&g(a)})});
================================================
FILE: app/src/main/assets/code_mirror/addon/display/rulers.js
================================================
'use strict';(function(c){"object"==typeof exports&&"object"==typeof module?c(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],c):c(CodeMirror)})(function(c){function e(a){a.state.rulerDiv.textContent="";var h=a.getOption("rulers"),e=a.defaultCharWidth(),k=a.charCoords(c.Pos(a.firstLine(),0),"div").left;a.state.rulerDiv.style.minHeight=a.display.scroller.offsetHeight+30+"px";for(var f=0;f<h.length;f++){var d=document.createElement("div");d.className=
"CodeMirror-ruler";var g,b=h[f];"number"==typeof b?g=b:(g=b.column,b.className&&(d.className+=" "+b.className),b.color&&(d.style.borderColor=b.color),b.lineStyle&&(d.style.borderLeftStyle=b.lineStyle),b.width&&(d.style.borderLeftWidth=b.width));d.style.left=k+g*e+"px";a.state.rulerDiv.appendChild(d)}}c.defineOption("rulers",!1,function(a,c){a.state.rulerDiv&&(a.display.lineSpace.removeChild(a.state.rulerDiv),a.state.rulerDiv=null,a.off("refresh",e));c&&c.length&&(a.state.rulerDiv=a.display.lineSpace.insertBefore(document.createElement("div"),
a.display.cursorDiv),a.state.rulerDiv.className="CodeMirror-rulers",e(a),a.on("refresh",e))})});
================================================
FILE: app/src/main/assets/code_mirror/addon/edit/closebrackets.js
================================================
'use strict';(function(f){"object"==typeof exports&&"object"==typeof module?f(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],f):f(CodeMirror)})(function(f){function r(b,a){return"pairs"==a&&"string"==typeof b?b:"object"==typeof b&&null!=b[a]?b[a]:w[a]}function z(b){return function(a){return A(a,b)}}function u(b){var a=b.state.closeBrackets;return a?b.getModeAt(b.getCursor()).closeBrackets||a:null}function A(b,a){var c=u(b);if(!c||b.getOption("disableInput"))return f.Pass;
var e=r(c,"pairs"),d=e.indexOf(a);if(-1==d)return f.Pass;for(var c=r(c,"triples"),v=e.charAt(d+1)==a,x=b.listSelections(),m=0==d%2,l,p=0;p<x.length;p++){var h=x[p],g=h.head,t=b.getRange(g,k(g.line,g.ch+1));if(m&&!h.empty())h="surround";else if(!v&&m||t!=a)if(v&&1<g.ch&&0<=c.indexOf(a)&&b.getRange(k(g.line,g.ch-2),g)==a+a&&(2>=g.ch||b.getRange(k(g.line,g.ch-3),k(g.line,g.ch-2))!=a))h="addFour";else if(v)if(!f.isWordChar(t)&&B(b,g,a))h="both";else return f.Pass;else if(m&&(b.getLine(g.line).length==
g.ch||C(t,e)||/\s/.test(t)))h="both";else return f.Pass;else h=0<=c.indexOf(a)&&b.getRange(g,k(g.line,g.ch+3))==a+a+a?"skipThree":"skip";if(!l)l=h;else if(l!=h)return f.Pass}var n=d%2?e.charAt(d-1):a,q=d%2?a:e.charAt(d+1);b.operation(function(){if("skip"==l)b.execCommand("goCharRight");else if("skipThree"==l)for(var a=0;3>a;a++)b.execCommand("goCharRight");else if("surround"==l){for(var c=b.getSelections(),a=0;a<c.length;a++)c[a]=n+c[a]+q;b.replaceSelections(c,"around");c=b.listSelections().slice();
for(a=0;a<c.length;a++){var e=c,g=a,d;d=c[a];var h=0<f.cmpPos(d.anchor,d.head);d={anchor:new k(d.anchor.line,d.anchor.ch+(h?-1:1)),head:new k(d.head.line,d.head.ch+(h?1:-1))};e[g]=d}b.setSelections(c)}else"both"==l?(b.replaceSelection(n+q,null),b.triggerElectric(n+q),b.execCommand("goCharLeft")):"addFour"==l&&(b.replaceSelection(n+n+n+n,"before"),b.execCommand("goCharRight"))})}function C(b,a){b=a.lastIndexOf(b);return-1<b&&1==b%2}function y(b,a){b=b.getRange(k(a.line,a.ch-1),k(a.line,a.ch+1));return 2==
b.length?b:null}function B(b,a,c){var e=b.getLine(a.line),d=b.getTokenAt(a);if(/\bstring2?\b/.test(d.type))return!1;c=new f.StringStream(e.slice(0,a.ch)+c+e.slice(a.ch),4);for(c.pos=c.start=d.start;;){e=b.getMode().token(c,d.state);if(c.pos>=a.ch+1)return/\bstring2?\b/.test(e);c.start=c.pos}}var w={pairs:"()[]{}''\"\"",triples:"",explode:"[]{}"},k=f.Pos;f.defineOption("autoCloseBrackets",!1,function(b,a,c){c&&c!=f.Init&&(b.removeKeyMap(p),b.state.closeBrackets=null);a&&(b.state.closeBrackets=a,b.addKeyMap(p))});
for(var q=w.pairs+"`",p={Backspace:function(b){var a=u(b);if(!a||b.getOption("disableInput"))return f.Pass;for(var c=r(a,"pairs"),a=b.listSelections(),e=0;e<a.length;e++){if(!a[e].empty())return f.Pass;var d=y(b,a[e].head);if(!d||0!=c.indexOf(d)%2)return f.Pass}for(e=a.length-1;0<=e;e--)c=a[e].head,b.replaceRange("",k(c.line,c.ch-1),k(c.line,c.ch+1),"+delete")},Enter:function(b){var a=u(b),a=a&&r(a,"explode");if(!a||b.getOption("disableInput"))return f.Pass;for(var c=b.listSelections(),e=0;e<c.length;e++){if(!c[e].empty())return f.Pass;
var d=y(b,c[e].head);if(!d||0!=a.indexOf(d)%2)return f.Pass}b.operation(function(){b.replaceSelection("\n\n",null);b.execCommand("goCharLeft");c=b.listSelections();for(var a=0;a<c.length;a++){var d=c[a].head.line;b.indentLine(d,null,!0);b.indentLine(d+1,null,!0)}})}},m=0;m<q.length;m++)p["'"+q.charAt(m)+"'"]=z(q.charAt(m))});
================================================
FILE: app/src/main/assets/code_mirror/addon/edit/closetag.js
================================================
'use strict';(function(e){"object"==typeof exports&&"object"==typeof module?e(require("../../lib/codemirror"),require("../fold/xml-fold")):"function"==typeof define&&define.amd?define(["../../lib/codemirror","../fold/xml-fold"],e):e(CodeMirror)})(function(e){function r(b){if(b.getOption("disableInput"))return e.Pass;for(var h=b.listSelections(),a=[],d=0;d<h.length;d++){if(!h[d].empty())return e.Pass;var f=h[d].head,c=b.getTokenAt(f),k=e.innerMode(b.getMode(),c.state),m=k.state;if("xml"!=k.mode.name||
!m.tagName)return e.Pass;var g=b.getOption("autoCloseTags"),l="html"==k.mode.configuration,k="object"==typeof g&&g.dontCloseTags||l&&t,l="object"==typeof g&&g.indentTags||l&&u,g=m.tagName;c.end>f.ch&&(g=g.slice(0,g.length-c.end+f.ch));var n=g.toLowerCase();if(!g||"string"==c.type&&(c.end!=f.ch||!/[\"\']/.test(c.string.charAt(c.string.length-1))||1==c.string.length)||"tag"==c.type&&"closeTag"==m.type||c.string.indexOf("/")==c.string.length-1||k&&-1<p(k,n)||q(b,g,f,m,!0))return e.Pass;c=l&&-1<p(l,n);
a[d]={indent:c,text:">"+(c?"\n\n":"")+"</"+g+">",newPos:c?e.Pos(f.line+1,0):e.Pos(f.line,f.ch+1)}}for(d=h.length-1;0<=d;d--)f=a[d],b.replaceRange(f.text,h[d].head,h[d].anchor,"+insert"),c=b.listSelections().slice(0),c[d]={head:f.newPos,anchor:f.newPos},b.setSelections(c),f.indent&&(b.indentLine(f.newPos.line,null,!0),b.indentLine(f.newPos.line+1,null,!0))}function n(b,h){for(var a=b.listSelections(),d=[],f=h?"/":"</",c=0;c<a.length;c++){if(!a[c].empty())return e.Pass;var k=a[c].head,m=b.getTokenAt(k),
g=e.innerMode(b.getMode(),m.state),l=g.state;if(h&&("string"==m.type||"<"!=m.string.charAt(0)||m.start!=k.ch-1))return e.Pass;if("xml"!=g.mode.name)if("htmlmixed"==b.getMode().name&&"javascript"==g.mode.name)g=f+"script";else if("htmlmixed"==b.getMode().name&&"css"==g.mode.name)g=f+"style";else return e.Pass;else{if(!l.context||!l.context.tagName||q(b,l.context.tagName,k,l))return e.Pass;g=f+l.context.tagName}">"!=b.getLine(k.line).charAt(m.end)&&(g+=">");d[c]=g}b.replaceSelections(d);a=b.listSelections();
for(c=0;c<a.length;c++)(c==a.length-1||a[c].head.line<a[c+1].head.line)&&b.indentLine(a[c].head.line)}function p(b,e){if(b.indexOf)return b.indexOf(e);for(var a=0,d=b.length;a<d;++a)if(b[a]==e)return a;return-1}function q(b,h,a,d,f){if(!e.scanForClosingTag)return!1;var c=Math.min(b.lastLine()+1,a.line+500);a=e.scanForClosingTag(b,a,null,c);if(!a||a.tag!=h)return!1;d=d.context;for(f=f?1:0;d&&d.tagName==h;d=d.prev)++f;a=a.to;for(d=1;d<f;d++){a=e.scanForClosingTag(b,a,null,c);if(!a||a.tag!=h)return!1;
a=a.to}return!0}e.defineOption("autoCloseTags",!1,function(b,h,a){a!=e.Init&&a&&b.removeKeyMap("autoCloseTags");if(h){a={name:"autoCloseTags"};if("object"!=typeof h||h.whenClosing)a["'/'"]=function(a){a=a.getOption("disableInput")?e.Pass:n(a,!0);return a};if("object"!=typeof h||h.whenOpening)a["'>'"]=function(a){return r(a)};b.addKeyMap(a)}});var t="area base br col command embed hr img input keygen link meta param source track wbr".split(" "),u="applet blockquote body button div dl fieldset form frameset h1 h2 h3 h4 h5 h6 head html iframe layer legend object ol p select table ul".split(" ");
e.commands.closeTag=function(b){return n(b)}});
================================================
FILE: app/src/main/assets/code_mirror/addon/edit/continuelist.js
================================================
'use strict';(function(d){"object"==typeof exports&&"object"==typeof module?d(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],d):d(CodeMirror)})(function(d){var l=/^(\s*)(>[> ]*|[*+-]\s|(\d+)([.)]))(\s*)/,m=/^(\s*)(>[> ]*|[*+-]|(\d+)[.)])(\s*)$/,n=/[*+-]\s/;d.commands.newlineAndIndentContinueMarkdownList=function(b){if(b.getOption("disableInput"))return d.Pass;for(var f=b.listSelections(),g=[],e=0;e<f.length;e++){var c=f[e].head,a=b.getStateAfter(c.line),
h=!1!==a.list,p=0!==a.quote,k=b.getLine(c.line),a=l.exec(k);if(!f[e].empty()||!h&&!p||!a){b.execCommand("newlineAndIndent");return}m.test(k)?(b.replaceRange("",{line:c.line,ch:0},{line:c.line,ch:c.ch+1}),g[e]="\n"):(c=a[1],h=a[5],a=n.test(a[2])||0<=a[2].indexOf(">")?a[2]:parseInt(a[3],10)+1+a[4],g[e]="\n"+c+a+h)}b.replaceSelections(g)}});
================================================
FILE: app/src/main/assets/code_mirror/addon/edit/matchbrackets.js
================================================
'use strict';(function(e){"object"==typeof exports&&"object"==typeof module?e(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)})(function(e){function r(a,c,b,e){var d=a.getLineHandle(c.line),l=c.ch-1,d=0<=l&&q[d.text.charAt(l)]||q[d.text.charAt(++l)];if(!d)return null;var h=">"==d.charAt(1)?1:-1;if(b&&0<h!=(l==c.ch))return null;b=a.getTokenTypeAt(m(c.line,l+1));a=t(a,m(c.line,l+(0<h?1:0)),h,b||null,e);return null==a?null:{from:m(c.line,
l),to:a&&a.pos,match:a&&a.ch==d.charAt(0),forward:0<h}}function t(a,c,b,e,d){var l=d&&d.maxScanLineLength||1E4,h=d&&d.maxScanLines||1E3,g=[];d=d&&d.bracketRegex?d.bracketRegex:/[(){}[\]]/;for(var h=0<b?Math.min(c.line+h,a.lastLine()+1):Math.max(a.firstLine()-1,c.line-h),k=c.line;k!=h;k+=b){var n=a.getLine(k);if(n){var f=0<b?0:n.length-1,w=0<b?n.length:-1;if(!(n.length>l))for(k==c.line&&(f=c.ch-(0>b?1:0));f!=w;f+=b){var p=n.charAt(f);if(d.test(p)&&(void 0===e||a.getTokenTypeAt(m(k,f+1))==e))if(">"==
q[p].charAt(1)==0<b)g.push(p);else if(g.length)g.pop();else return{pos:m(k,f),ch:p}}}}return k-b==(0<b?a.lastLine():a.firstLine())?!1:null}function u(a,c,b){for(var e=a.state.matchBrackets.maxHighlightLineLength||1E3,d=[],f=a.listSelections(),h=0;h<f.length;h++){var g=f[h].empty()&&r(a,f[h].head,!1,b);if(g&&a.getLine(g.from.line).length<=e){var k=g.match?"CodeMirror-matchingbracket":"CodeMirror-nonmatchingbracket";d.push(a.markText(g.from,m(g.from.line,g.from.ch+1),{className:k}));g.to&&a.getLine(g.to.line).length<=
e&&d.push(a.markText(g.to,m(g.to.line,g.to.ch+1),{className:k}))}}if(d.length)if(x&&a.state.focused&&a.focus(),b=function(){a.operation(function(){for(var a=0;a<d.length;a++)d[a].clear()})},c)setTimeout(b,800);else return b}function v(a){a.operation(function(){f&&(f(),f=null);f=u(a,!1,a.state.matchBrackets)})}var x=/MSIE \d/.test(navigator.userAgent)&&(null==document.documentMode||8>document.documentMode),m=e.Pos,q={"(":")>",")":"(<","[":"]>","]":"[<","{":"}>","}":"{<"},f=null;e.defineOption("matchBrackets",
!1,function(a,c,b){b&&b!=e.Init&&(a.off("cursorActivity",v),f&&(f(),f=null));c&&(a.state.matchBrackets="object"==typeof c?c:{},a.on("cursorActivity",v))});e.defineExtension("matchBrackets",function(){u(this,!0)});e.defineExtension("findMatchingBracket",function(a,c,b){return r(this,a,c,b)});e.defineExtension("scanForBracket",function(a,c,b,e){return t(this,a,c,b,e)})});
================================================
FILE: app/src/main/assets/code_mirror/addon/edit/matchtags.js
================================================
'use strict';(function(d){"object"==typeof exports&&"object"==typeof module?d(require("../../lib/codemirror"),require("../fold/xml-fold")):"function"==typeof define&&define.amd?define(["../../lib/codemirror","../fold/xml-fold"],d):d(CodeMirror)})(function(d){function f(a){a.state.tagHit&&a.state.tagHit.clear();a.state.tagOther&&a.state.tagOther.clear();a.state.tagHit=a.state.tagOther=null}function e(a){a.state.failedTagMatch=!1;a.operation(function(){f(a);if(!a.somethingSelected()){var b=a.getCursor(),
c=a.getViewport();c.from=Math.min(c.from,b.line);c.to=Math.max(b.line+1,c.to);if(b=d.findMatchingTag(a,b,c))a.state.matchBothTags&&(c="open"==b.at?b.open:b.close)&&(a.state.tagHit=a.markText(c.from,c.to,{className:"CodeMirror-matchingtag"})),(b="close"==b.at?b.open:b.close)?a.state.tagOther=a.markText(b.from,b.to,{className:"CodeMirror-matchingtag"}):a.state.failedTagMatch=!0}})}function g(a){a.state.failedTagMatch&&e(a)}d.defineOption("matchTags",!1,function(a,b,c){c&&c!=d.Init&&(a.off("cursorActivity",
e),a.off("viewportChange",g),f(a));b&&(a.state.matchBothTags="object"==typeof b&&b.bothTags,a.on("cursorActivity",e),a.on("viewportChange",g),e(a))});d.commands.toMatchingTag=function(a){var b=d.findMatchingTag(a,a.getCursor());b&&(b="close"==b.at?b.open:b.close)&&a.extendSelection(b.to,b.from)}});
================================================
FILE: app/src/main/assets/code_mirror/addon/edit/trailingspace.js
================================================
'use strict';(function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})(function(a){a.defineOption("showTrailingSpace",!1,function(d,e,b){b==a.Init&&(b=!1);b&&!e?d.removeOverlay("trailingspace"):!b&&e&&d.addOverlay({token:function(a){for(var b=a.string.length,c=b;c&&/\s/.test(a.string.charAt(c-1));--c);if(c>a.pos)return a.pos=c,null;a.pos=b;return"trailingspace"},name:"trailingspace"})})});
================================================
FILE: app/src/main/assets/code_mirror/addon/fold/brace-fold.js
================================================
'use strict';(function(d){"object"==typeof exports&&"object"==typeof module?d(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],d):d(CodeMirror)})(function(d){d.registerHelper("fold","brace",function(e,a){function b(h){for(var c=a.ch,b=0;;)if(c=0>=c?-1:f.lastIndexOf(h,c-1),-1==c){if(1==b)break;b=1;c=f.length}else{if(1==b&&c<a.ch)break;k=e.getTokenTypeAt(d.Pos(g,c+1));if(!/^(comment|string)/.test(k))return c+1;--c}}var g=a.line,f=e.getLine(g),k,
h="{",t="}",l=b("{");null==l&&(h="[",t="]",l=b("["));if(null!=l){var u=1,v=e.lastLine(),p,r,m=g;a:for(;m<=v;++m)for(var n=e.getLine(m),c=m==g?l:0;;){var q=n.indexOf(h,c),c=n.indexOf(t,c);0>q&&(q=n.length);0>c&&(c=n.length);c=Math.min(q,c);if(c==n.length)break;if(e.getTokenTypeAt(d.Pos(m,c+1))==k)if(c==q)++u;else if(!--u){p=m;r=c;break a}++c}if(null!=p&&(g!=p||r!=l))return{from:d.Pos(g,l),to:d.Pos(p,r)}}});d.registerHelper("fold","import",function(e,a){function b(h){if(h<e.firstLine()||h>e.lastLine())return null;
var a=e.getTokenAt(d.Pos(h,1));/\S/.test(a.string)||(a=e.getTokenAt(d.Pos(h,a.end+1)));if("keyword"!=a.type||"import"!=a.string)return null;var b=h;for(h=Math.min(e.lastLine(),h+10);b<=h;++b){var f=e.getLine(b).indexOf(";");if(-1!=f)return{startCh:a.end,end:d.Pos(b,f)}}}a=a.line;var g=b(a),f;if(!g||b(a-1)||(f=b(a-2))&&f.end.line==a-1)return null;for(f=g.end;;){var k=b(f.line+1);if(null==k)break;f=k.end}return{from:e.clipPos(d.Pos(a,g.startCh+1)),to:f}});d.registerHelper("fold","include",function(e,
a){function b(a){if(a<e.firstLine()||a>e.lastLine())return null;var b=e.getTokenAt(d.Pos(a,1));/\S/.test(b.string)||(b=e.getTokenAt(d.Pos(a,b.end+1)));if("meta"==b.type&&"#include"==b.string.slice(0,8))return b.start+8}a=a.line;var g=b(a);if(null==g||null!=b(a-1))return null;for(var f=a;null!=b(f+1);)++f;return{from:d.Pos(a,g+1),to:e.clipPos(d.Pos(f))}})});
================================================
FILE: app/src/main/assets/code_mirror/addon/fold/comment-fold.js
================================================
'use strict';(function(b){"object"==typeof exports&&"object"==typeof module?b(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],b):b(CodeMirror)})(function(b){b.registerGlobalHelper("fold","comment",function(b){return b.blockCommentStart&&b.blockCommentEnd},function(g,d){var e=g.getModeAt(d),m=e.blockCommentStart,e=e.blockCommentEnd;if(m&&e){for(var f=d.line,h=g.getLine(f),a=d.ch,k=0;;)if(a=0>=a?-1:h.lastIndexOf(m,a-1),-1==a){if(1==k)return;k=1;
a=h.length}else{if(1==k&&a<d.ch)return;if(/comment/.test(g.getTokenTypeAt(b.Pos(f,a+1)))&&(0==a||h.slice(a-e.length,a)==e||!/comment/.test(g.getTokenTypeAt(b.Pos(f,a))))){d=a+m.length;break}--a}var h=1,k=g.lastLine(),n,q,a=f;a:for(;a<=k;++a)for(var l=g.getLine(a),c=a==f?d:0;;){var p=l.indexOf(m,c),c=l.indexOf(e,c);0>p&&(p=l.length);0>c&&(c=l.length);c=Math.min(p,c);if(c==l.length)break;if(c==p)++h;else if(!--h){n=a;q=c;break a}++c}if(null!=n&&(f!=n||q!=d))return{from:b.Pos(f,d),to:b.Pos(n,q)}}})});
================================================
FILE: app/src/main/assets/code_mirror/addon/fold/foldcode.js
================================================
'use strict';(function(b){"object"==typeof exports&&"object"==typeof module?b(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],b):b(CodeMirror)})(function(b){function k(a,c,d,g){function f(d){var b=k(a,c);if(!b||b.to.line-b.from.line<l)return null;for(var f=a.findMarksAt(b.from),e=0;e<f.length;++e)if(f[e].__isFold&&"fold"!==g){if(!d)return null;b.cleared=!0;f[e].clear()}return b}if(d&&d.call){var k=d;d=null}else k=h(a,d,"rangeFinder");"number"==
typeof c&&(c=b.Pos(c,0));var l=h(a,d,"minFoldSize"),e=f(!0);if(h(a,d,"scanUp"))for(;!e&&c.line>a.firstLine();)c=b.Pos(c.line-1,0),e=f(!1);if(e&&!e.cleared&&"unfold"!==g){var m=p(a,d);b.on(m,"mousedown",function(a){n.clear();b.e_preventDefault(a)});var n=a.markText(e.from,e.to,{replacedWith:m,clearOnEnter:h(a,d,"clearOnEnter"),__isFold:!0});n.on("clear",function(c,d){b.signal(a,"unfold",a,c,d)});b.signal(a,"fold",a,e.from,e.to)}}function p(a,c){a=h(a,c,"widget");"string"==typeof a&&(c=document.createTextNode(a),
a=document.createElement("span"),a.appendChild(c),a.className="CodeMirror-foldmarker");return a}function h(a,c,b){return c&&void 0!==c[b]?c[b]:(a=a.options.foldOptions)&&void 0!==a[b]?a[b]:l[b]}b.newFoldFunction=function(a,c){return function(b,g){k(b,g,{rangeFinder:a,widget:c})}};b.defineExtension("foldCode",function(a,b,d){k(this,a,b,d)});b.defineExtension("isFolded",function(a){a=this.findMarksAt(a);for(var b=0;b<a.length;++b)if(a[b].__isFold)return!0});b.commands.toggleFold=function(a){a.foldCode(a.getCursor())};
b.commands.fold=function(a){a.foldCode(a.getCursor(),null,"fold")};b.commands.unfold=function(a){a.foldCode(a.getCursor(),null,"unfold")};b.commands.foldAll=function(a){a.operation(function(){for(var c=a.firstLine(),d=a.lastLine();c<=d;c++)a.foldCode(b.Pos(c,0),null,"fold")})};b.commands.unfoldAll=function(a){a.operation(function(){for(var c=a.firstLine(),d=a.lastLine();c<=d;c++)a.foldCode(b.Pos(c,0),null,"unfold")})};b.registerHelper("fold","combine",function(){var a=Array.prototype.slice.call(arguments,
0);return function(b,d){for(var c=0;c<a.length;++c){var f=a[c](b,d);if(f)return f}}});b.registerHelper("fold","auto",function(a,b){for(var c=a.getHelpers(b,"fold"),g=0;g<c.length;g++){var f=c[g](a,b);if(f)return f}});var l={rangeFinder:b.fold.auto,widget:"\u2194",minFoldSize:0,scanUp:!1,clearOnEnter:!0};b.defineOption("foldOptions",null);b.defineExtension("foldOption",function(a,b){return h(this,a,b)})});
================================================
FILE: app/src/main/assets/code_mirror/addon/fold/foldgutter.css
================================================
.CodeMirror-foldmarker{color:#00f;text-shadow:#b9f 1px 1px 2px,#b9f -1px -1px 2px,#b9f 1px -1px 2px,#b9f -1px 1px 2px;font-family:arial;line-height:.3;cursor:pointer}.CodeMirror-foldgutter{width:.7em}.CodeMirror-foldgutter-folded,.CodeMirror-foldgutter-open{cursor:pointer}.CodeMirror-foldgutter-open:after{content:"\25BE"}.CodeMirror-foldgutter-folded:after{content:"\25B8"}
================================================
FILE: app/src/main/assets/code_mirror/addon/fold/foldgutter.js
================================================
'use strict';var $jscomp={scope:{},findInternal:function(a,f,d){a instanceof String&&(a=String(a));for(var g=a.length,e=0;e<g;e++){var k=a[e];if(f.call(d,k,e,a))return{i:e,v:k}}return{i:-1,v:void 0}}};$jscomp.defineProperty="function"==typeof Object.defineProperties?Object.defineProperty:function(a,f,d){if(d.get||d.set)throw new TypeError("ES3 does not support getters and setters.");a!=Array.prototype&&a!=Object.prototype&&(a[f]=d.value)};
$jscomp.getGlobal=function(a){return"undefined"!=typeof window&&window===a?a:"undefined"!=typeof global?global:a};$jscomp.global=$jscomp.getGlobal(this);$jscomp.polyfill=function(a,f,d,g){if(f){d=$jscomp.global;a=a.split(".");for(g=0;g<a.length-1;g++){var e=a[g];e in d||(d[e]={});d=d[e]}a=a[a.length-1];g=d[a];f=f(g);f!=g&&null!=f&&$jscomp.defineProperty(d,a,{configurable:!0,writable:!0,value:f})}};
$jscomp.polyfill("Array.prototype.find",function(a){return a?a:function(a,d){return $jscomp.findInternal(this,a,d).v}},"es6-impl","es3");
(function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror"),require("./foldcode")):"function"==typeof define&&define.amd?define(["../../lib/codemirror","./foldcode"],a):a(CodeMirror)})(function(a){function f(b){this.options=b;this.from=this.to=0}function d(b,c){b=b.findMarks(m(c,0),m(c+1,0));for(var a=0;a<b.length;++a)if(b[a].__isFold&&b[a].find().from.line==c)return b[a]}function g(b){if("string"==typeof b){var c=document.createElement("div");c.className=b+" CodeMirror-guttermarker-subtle";
return c}return b.cloneNode(!0)}function e(b,c,a){var l=b.state.foldGutter.options,e=c,f=b.foldOption(l,"minFoldSize"),k=b.foldOption(l,"rangeFinder");b.eachLine(c,a,function(c){var a=null;if(d(b,e))a=g(l.indicatorFolded);else{var h=m(e,0);(h=k&&k(b,h))&&h.to.line-h.from.line>=f&&(a=g(l.indicatorOpen))}b.setGutterMarker(c,l.gutter,a);++e})}function k(b){var c=b.getViewport(),a=b.state.foldGutter;a&&(b.operation(function(){e(b,c.from,c.to)}),a.from=c.from,a.to=c.to)}function q(b,c,a){var h=b.state.foldGutter;
h&&(h=h.options,a==h.gutter&&((a=d(b,c))?a.clear():b.foldCode(m(c,0),h.rangeFinder)))}function n(b){var c=b.state.foldGutter;if(c){var a=c.options;c.from=c.to=0;clearTimeout(c.changeUpdate);c.changeUpdate=setTimeout(function(){k(b)},a.foldOnChangeTimeSpan||600)}}function r(b){var a=b.state.foldGutter;if(a){var d=a.options;clearTimeout(a.changeUpdate);a.changeUpdate=setTimeout(function(){var c=b.getViewport();a.from==a.to||20<c.from-a.to||20<a.from-c.to?k(b):b.operation(function(){c.from<a.from&&(e(b,
c.from,a.from),a.from=c.from);c.to>a.to&&(e(b,a.to,c.to),a.to=c.to)})},d.updateViewportTimeSpan||400)}}function p(a,c){var b=a.state.foldGutter;b&&(c=c.line,c>=b.from&&c<b.to&&e(a,c,c+1))}a.defineOption("foldGutter",!1,function(b,c,d){d&&d!=a.Init&&(b.clearGutter(b.state.foldGutter.options.gutter),b.state.foldGutter=null,b.off("gutterClick",q),b.off("change",n),b.off("viewportChange",r),b.off("fold",p),b.off("unfold",p),b.off("swapDoc",n));c&&(d=b.state,!0===c&&(c={}),null==c.gutter&&(c.gutter="CodeMirror-foldgutter"),
null==c.indicatorOpen&&(c.indicatorOpen="CodeMirror-foldgutter-open"),null==c.indicatorFolded&&(c.indicatorFolded="CodeMirror-foldgutter-folded"),d.foldGutter=new f(c),k(b),b.on("gutterClick",q),b.on("change",n),b.on("viewportChange",r),b.on("fold",p),b.on("unfold",p),b.on("swapDoc",n))});var m=a.Pos});
================================================
FILE: app/src/main/assets/code_mirror/addon/fold/indent-fold.js
================================================
'use strict';(function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})(function(a){a.registerHelper("fold","indent",function(b,e){var g=b.getOption("tabSize"),f=b.getLine(e.line);if(/\S/.test(f)){for(var k=a.countColumn(f,null,g),c=null,d=e.line+1,l=b.lastLine();d<=l;++d){var h=b.getLine(d);if(a.countColumn(h,null,g)>k)c=d;else if(/\S/.test(h))break}if(c)return{from:a.Pos(e.line,
f.length),to:a.Pos(c,b.getLine(c).length)}}})});
================================================
FILE: app/src/main/assets/code_mirror/addon/fold/markdown-fold.js
================================================
'use strict';(function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})(function(a){a.registerHelper("fold","markdown",function(c,d){function g(b){return(b=c.getTokenTypeAt(a.Pos(b,0)))&&/\bheader\b/.test(b)}function h(b,a,c){return(a=a&&a.match(/^#+/))&&g(b)?a[0].length:(a=c&&c.match(/^[=\-]+\s*$/))&&g(b+1)?"="==c[0]?1:2:100}var k=c.getLine(d.line),e=c.getLine(d.line+1),
l=h(d.line,k,e);if(100!==l){for(var m=c.lastLine(),b=d.line,f=c.getLine(b+2);b<m&&!(h(b+1,e,f)<=l);)++b,e=f,f=c.getLine(b+2);return{from:a.Pos(d.line,k.length),to:a.Pos(b,c.getLine(b).length)}}})});
================================================
FILE: app/src/main/assets/code_mirror/addon/fold/xml-fold.js
================================================
'use strict';(function(e){"object"==typeof exports&&"object"==typeof module?e(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)})(function(e){function l(a,b,d,c){this.line=b;this.ch=d;this.cm=a;this.text=a.getLine(b);this.min=c?Math.max(c.from,a.firstLine()):a.firstLine();this.max=c?Math.min(c.to-1,a.lastLine()):a.lastLine()}function m(a,b){return(a=a.cm.getTokenTypeAt(h(a.line,b)))&&/\btag\b/.test(a)}function t(a){if(!(a.line>=
a.max))return a.ch=0,a.text=a.cm.getLine(++a.line),!0}function u(a){if(!(a.line<=a.min))return a.text=a.cm.getLine(--a.line),a.ch=a.text.length,!0}function q(a){for(;;){var b=a.text.indexOf(">",a.ch);if(-1==b)if(t(a))continue;else break;if(m(a,b+1)){var d=a.text.lastIndexOf("/",b),d=-1<d&&!/\S/.test(a.text.slice(d+1,b));a.ch=b+1;return d?"selfClose":"regular"}a.ch=b+1}}function r(a){for(;;){var b=a.ch?a.text.lastIndexOf("<",a.ch-1):-1;if(-1==b)if(u(a))continue;else break;if(m(a,b+1)){n.lastIndex=
b;a.ch=b;var d=n.exec(a.text);if(d&&d.index==b)return d}else a.ch=b}}function v(a){for(;;){n.lastIndex=a.ch;var b=n.exec(a.text);if(!b)if(t(a))continue;else break;if(m(a,b.index+1))return a.ch=b.index+b[0].length,b;a.ch=b.index+1}}function p(a,b){for(var d=[];;){var c=v(a),g,f=a.line,k=a.ch-(c?c[0].length:0);if(!c||!(g=q(a)))break;if("selfClose"!=g)if(c[1]){for(var e=d.length-1;0<=e;--e)if(d[e]==c[2]){d.length=e;break}if(0>e&&(!b||b==c[2]))return{tag:c[2],from:h(f,k),to:h(a.line,a.ch)}}else d.push(c[2])}}
function w(a,b){for(var d=[];;){var c;a:for(c=a;;){var g=c.ch?c.text.lastIndexOf(">",c.ch-1):-1;if(-1==g)if(u(c))continue;else{c=void 0;break a}if(m(c,g+1)){var f=c.text.lastIndexOf("/",g),f=-1<f&&!/\S/.test(c.text.slice(f+1,g));c.ch=g+1;c=f?"selfClose":"regular";break a}else c.ch=g}if(!c)break;if("selfClose"==c)r(a);else{c=a.line;g=a.ch;f=r(a);if(!f)break;if(f[1])d.push(f[2]);else{for(var e=d.length-1;0<=e;--e)if(d[e]==f[2]){d.length=e;break}if(0>e&&(!b||b==f[2]))return{tag:f[2],from:h(a.line,a.ch),
to:h(c,g)}}}}}var h=e.Pos,n=/<(\/?)([A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD-:.0-9\u00B7\u0300-\u036F\u203F-\u2040]*)/g;e.registerHelper("fold","xml",function(a,b){for(a=new l(a,b.line,0);;){var d=v(a),c;if(!d||a.line!=b.line||!(c=q(a)))break;
if(!d[1]&&"selfClose"!=c)return b=h(a.line,a.ch),(a=p(a,d[2]))&&{from:b,to:a.from}}});e.findMatchingTag=function(a,b,d){var c=new l(a,b.line,b.ch,d);if(-1!=c.text.indexOf(">")||-1!=c.text.indexOf("<")){var e=q(c),f=e&&h(c.line,c.ch),k=e&&r(c);if(e&&k&&!(0<(c.line-b.line||c.ch-b.ch))){b={from:h(c.line,c.ch),to:f,tag:k[2]};if("selfClose"==e)return{open:b,close:null,at:"open"};if(k[1])return{open:w(c,k[2]),close:b,at:"close"};c=new l(a,f.line,f.ch,d);return{open:b,close:p(c,k[2]),at:"open"}}}};e.findEnclosingTag=
function(a,b,d){for(var c=new l(a,b.line,b.ch,d);;){var e=w(c);if(!e)break;var f=new l(a,b.line,b.ch,d);if(f=p(f,e.tag))return{open:e,close:f}}};e.scanForClosingTag=function(a,b,d,c){a=new l(a,b.line,b.ch,c?{from:0,to:c}:null);return p(a,d)}});
================================================
FILE: app/src/main/assets/code_mirror/addon/hint/anyword-hint.js
================================================
'use strict';(function(b){"object"==typeof exports&&"object"==typeof module?b(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],b):b(CodeMirror)})(function(b){var p=/[\w$]+/;b.registerHelper("hint","anyword",function(g,a){for(var l=a&&a.word||p,q=a&&a.range||500,c=g.getCursor(),d=g.getLine(c.line),m=c.ch,e=m;e&&l.test(d.charAt(e-1));)--e;d=e!=m&&d.slice(e,m);a=a&&a.list||[];for(var n={},l=new RegExp(l.source,"g"),h=-1;1>=h;h+=2)for(var k=c.line,
r=Math.min(Math.max(k+h*q,g.firstLine()),g.lastLine())+h;k!=r;k+=h)for(var t=g.getLine(k),f;f=l.exec(t);)k==c.line&&f[0]===d||d&&0!=f[0].lastIndexOf(d,0)||Object.prototype.hasOwnProperty.call(n,f[0])||(n[f[0]]=!0,a.push(f[0]));return{list:a,from:b.Pos(c.line,e),to:b.Pos(c.line,m)}})});
================================================
FILE: app/src/main/assets/code_mirror/addon/hint/css-hint.js
================================================
'use strict';(function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror"),require("../../mode/css/css")):"function"==typeof define&&define.amd?define(["../../lib/codemirror","../../mode/css/css"],a):a(CodeMirror)})(function(a){var m={link:1,visited:1,active:1,hover:1,focus:1,"first-letter":1,"first-line":1,"first-child":1,before:1,after:1,lang:1};a.registerHelper("hint","css",function(d){function f(b){for(var a in b)h&&0!=a.lastIndexOf(h,0)||k.push(a)}var e=d.getCursor(),
c=d.getTokenAt(e),b=a.innerMode(d.getMode(),c.state);if("css"==b.mode.name){if("keyword"==c.type&&0=="!important".indexOf(c.string))return{list:["!important"],from:a.Pos(e.line,c.start),to:a.Pos(e.line,c.end)};d=c.start;var l=e.ch,h=c.string.slice(0,l-d);/[^\w$_-]/.test(h)&&(h="",d=l=e.ch);var g=a.resolveMode("text/css"),k=[],b=b.state.state;if("pseudo"==b||"variable-3"==c.type)f(m);else if("block"==b||"maybeprop"==b)f(g.propertyKeywords);else if("prop"==b||"parens"==b||"at"==b||"params"==b)f(g.valueKeywords),
f(g.colorKeywords);else if("media"==b||"media_parens"==b)f(g.mediaTypes),f(g.mediaFeatures);if(k.length)return{list:k,from:a.Pos(e.line,d),to:a.Pos(e.line,l)}}})});
================================================
FILE: app/src/main/assets/code_mirror/addon/hint/html-hint.js
================================================
'use strict';(function(b){"object"==typeof exports&&"object"==typeof module?b(require("../../lib/codemirror"),require("./xml-hint")):"function"==typeof define&&define.amd?define(["../../lib/codemirror","./xml-hint"],b):b(CodeMirror)})(function(b){function n(a){for(var b in g)g.hasOwnProperty(b)&&(a.attrs[b]=g[b])}var d="ab aa af ak sq am ar an hy as av ae ay az bm ba eu be bn bh bi bs br bg my ca ch ce ny zh cv kw co cr hr cs da dv nl dz en eo et ee fo fj fi fr ff gl ka de el gn gu ht ha he hz hi ho hu ia id ie ga ig ik io is it iu ja jv kl kn kr ks kk km ki rw ky kv kg ko ku kj la lb lg li ln lo lt lu lv gv mk mg ms ml mt mi mr mh mn na nv nb nd ne ng nn no ii nr oc oj cu om or os pa pi fa pl ps pt qu rm rn ro ru sa sc sd se sm sg sr gd sn si sk sl so st es su sw ss sv ta te tg th ti bo tk tl tn to tr ts tt tw ty ug uk ur uz ve vi vo wa cy wo fy xh yi yo za zu".split(" "),
c=["_blank","_self","_top","_parent"],h=["ascii","utf-8","utf-16","latin1","latin1"],k=["get","post","put","delete"],l=["application/x-www-form-urlencoded","multipart/form-data","text/plain"],e="all;screen;print;embossed;braille;handheld;print;projection;screen;tty;tv;speech;3d-glasses;resolution [>][<][=] [X];device-aspect-ratio: X/Y;orientation:portrait;orientation:landscape;device-height: [X];device-width: [X]".split(";"),a={attrs:{}},f={a:{attrs:{href:null,ping:null,type:null,media:e,target:c,
hreflang:d}},abbr:a,acronym:a,address:a,applet:a,area:{attrs:{alt:null,coords:null,href:null,target:null,ping:null,media:e,hreflang:d,type:null,shape:["default","rect","circle","poly"]}},article:a,aside:a,audio:{attrs:{src:null,mediagroup:null,crossorigin:["anonymous","use-credentials"],preload:["none","metadata","auto"],autoplay:["","autoplay"],loop:["","loop"],controls:["","controls"]}},b:a,base:{attrs:{href:null,target:c}},basefont:a,bdi:a,bdo:a,big:a,blockquote:{attrs:{cite:null}},body:a,br:a,
button:{attrs:{form:null,formaction:null,name:null,value:null,autofocus:["","autofocus"],disabled:["","autofocus"],formenctype:l,formmethod:k,formnovalidate:["","novalidate"],formtarget:c,type:["submit","reset","button"]}},canvas:{attrs:{width:null,height:null}},caption:a,center:a,cite:a,code:a,col:{attrs:{span:null}},colgroup:{attrs:{span:null}},command:{attrs:{type:["command","checkbox","radio"],label:null,icon:null,radiogroup:null,command:null,title:null,disabled:["","disabled"],checked:["","checked"]}},
data:{attrs:{value:null}},datagrid:{attrs:{disabled:["","disabled"],multiple:["","multiple"]}},datalist:{attrs:{data:null}},dd:a,del:{attrs:{cite:null,datetime:null}},details:{attrs:{open:["","open"]}},dfn:a,dir:a,div:a,dl:a,dt:a,em:a,embed:{attrs:{src:null,type:null,width:null,height:null}},eventsource:{attrs:{src:null}},fieldset:{attrs:{disabled:["","disabled"],form:null,name:null}},figcaption:a,figure:a,font:a,footer:a,form:{attrs:{action:null,name:null,"accept-charset":h,autocomplete:["on","off"],
enctype:l,method:k,novalidate:["","novalidate"],target:c}},frame:a,frameset:a,h1:a,h2:a,h3:a,h4:a,h5:a,h6:a,head:{attrs:{},children:"title base link style meta script noscript command".split(" ")},header:a,hgroup:a,hr:a,html:{attrs:{manifest:null},children:["head","body"]},i:a,iframe:{attrs:{src:null,srcdoc:null,name:null,width:null,height:null,sandbox:["allow-top-navigation","allow-same-origin","allow-forms","allow-scripts"],seamless:["","seamless"]}},img:{attrs:{alt:null,src:null,ismap:null,usemap:null,
width:null,height:null,crossorigin:["anonymous","use-credentials"]}},input:{attrs:{alt:null,dirname:null,form:null,formaction:null,height:null,list:null,max:null,maxlength:null,min:null,name:null,pattern:null,placeholder:null,size:null,src:null,step:null,value:null,width:null,accept:["audio/*","video/*","image/*"],autocomplete:["on","off"],autofocus:["","autofocus"],checked:["","checked"],disabled:["","disabled"],formenctype:l,formmethod:k,formnovalidate:["","novalidate"],formtarget:c,multiple:["",
"multiple"],readonly:["","readonly"],required:["","required"],type:"hidden text search tel url email password datetime date month week time datetime-local number range color checkbox radio file submit image reset button".split(" ")}},ins:{attrs:{cite:null,datetime:null}},kbd:a,keygen:{attrs:{challenge:null,form:null,name:null,autofocus:["","autofocus"],disabled:["","disabled"],keytype:["RSA"]}},label:{attrs:{"for":null,form:null}},legend:a,li:{attrs:{value:null}},link:{attrs:{href:null,type:null,
hreflang:d,media:e,sizes:["all","16x16","16x16 32x32","16x16 32x32 64x64"]}},map:{attrs:{name:null}},mark:a,menu:{attrs:{label:null,type:["list","context","toolbar"]}},meta:{attrs:{content:null,charset:h,name:"viewport application-name author description generator keywords".split(" "),"http-equiv":["content-language","content-type","default-style","refresh"]}},meter:{attrs:{value:null,min:null,low:null,high:null,max:null,optimum:null}},nav:a,noframes:a,noscript:a,object:{attrs:{data:null,type:null,
name:null,usemap:null,form:null,width:null,height:null,typemustmatch:["","typemustmatch"]}},ol:{attrs:{reversed:["","reversed"],start:null,type:["1","a","A","i","I"]}},optgroup:{attrs:{disabled:["","disabled"],label:null}},option:{attrs:{disabled:["","disabled"],label:null,selected:["","selected"],value:null}},output:{attrs:{"for":null,form:null,name:null}},p:a,param:{attrs:{name:null,value:null}},pre:a,progress:{attrs:{value:null,max:null}},q:{attrs:{cite:null}},rp:a,rt:a,ruby:a,s:a,samp:a,script:{attrs:{type:["text/javascript"],
src:null,async:["","async"],defer:["","defer"],charset:h}},section:a,select:{attrs:{form:null,name:null,size:null,autofocus:["","autofocus"],disabled:["","disabled"],multiple:["","multiple"]}},small:a,source:{attrs:{src:null,type:null,media:null}},span:a,strike:a,strong:a,style:{attrs:{type:["text/css"],media:e,scoped:null}},sub:a,summary:a,sup:a,table:a,tbody:a,td:{attrs:{colspan:null,rowspan:null,headers:null}},textarea:{attrs:{dirname:null,form:null,maxlength:null,name:null,placeholder:null,rows:null,
cols:null,autofocus:["","autofocus"],disabled:["","disabled"],readonly:["","readonly"],required:["","required"],wrap:["soft","hard"]}},tfoot:a,th:{attrs:{colspan:null,rowspan:null,headers:null,scope:["row","col","rowgroup","colgroup"]}},thead:a,time:{attrs:{datetime:null}},title:a,tr:a,track:{attrs:{src:null,label:null,"default":null,kind:["subtitles","captions","descriptions","chapters","metadata"],srclang:d}},tt:a,u:a,ul:a,"var":a,video:{attrs:{src:null,poster:null,width:null,height:null,crossorigin:["anonymous",
"use-credentials"],preload:["auto","metadata","none"],autoplay:["","autoplay"],mediagroup:["movie"],muted:["","muted"],controls:["","controls"]}},wbr:a},g={accesskey:"abcdefghijklmnopqrstuvwxyz0123456789".split(""),"class":null,contenteditable:["true","false"],contextmenu:null,dir:["ltr","rtl","auto"],draggable:["true","false","auto"],dropzone:["copy","move","link","string:","file:"],hidden:["hidden"],id:null,inert:["inert"],itemid:null,itemprop:null,itemref:null,itemscope:["itemscope"],itemtype:null,
lang:["en","es"],spellcheck:["true","false"],style:null,tabindex:"123456789".split(""),title:null,translate:["yes","no"],onclick:null,rel:"stylesheet alternate author bookmark help license next nofollow noreferrer prefetch prev search tag".split(" ")};n(a);for(var m in f)f.hasOwnProperty(m)&&f[m]!=a&&n(f[m]);b.htmlSchema=f;b.registerHelper("hint","html",function(a,c){var d={schemaInfo:f};if(c)for(var e in c)d[e]=c[e];return b.hint.xml(a,d)})});
================================================
FILE: app/src/main/assets/code_mirror/addon/hint/javascript-hint.js
================================================
'use strict';(function(h){"object"==typeof exports&&"object"==typeof module?h(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],h):h(CodeMirror)})(function(h){function m(a,b){for(var k=0,e=a.length;k<e;++k)b(a[k])}function q(a,b,k,e){var c=a.getCursor(),d=k(a,c);if(!/\b(?:string|comment)\b/.test(d.type)){d.state=h.innerMode(a.getMode(),d.state).state;/^[\w$_]*$/.test(d.string)?d.end>c.ch&&(d.end=c.ch,d.string=d.string.slice(0,c.ch-d.start)):d={start:c.ch,
end:c.ch,string:"",state:d.state,type:"."==d.string?"property":null};for(var f=d;"property"==f.type;){f=k(a,n(c.line,f.start));if("."!=f.string)return;f=k(a,n(c.line,f.start));if(!p)var p=[];p.push(f)}return{list:r(d,p,b,e),from:n(c.line,d.start),to:n(c.line,d.end)}}}function t(a,b){a=a.getTokenAt(b);b.ch==a.start+1&&"."==a.string.charAt(0)?(a.end=a.start,a.string=".",a.type="property"):/^\.[\w$_]*$/.test(a.string)&&(a.type="property",a.start++,a.string=a.string.replace(/\./,""));return a}function r(a,
b,k,e){function c(a){var b;if(b=0==a.lastIndexOf(h,0)){a:if(Array.prototype.indexOf)b=-1!=f.indexOf(a);else{for(b=f.length;b--;)if(f[b]===a){b=!0;break a}b=!1}b=!b}b&&f.push(a)}function d(a){"string"==typeof a?m(u,c):a instanceof Array?m(v,c):a instanceof Function&&m(w,c);if(Object.getOwnPropertyNames&&Object.getPrototypeOf)for(;a;a=Object.getPrototypeOf(a))Object.getOwnPropertyNames(a).forEach(c);else for(var b in a)c(b)}var f=[],h=a.string,l=e&&e.globalScope||window;if(b&&b.length){a=b.po
gitextract_6u3neemq/ ├── .gitattributes ├── .gitignore ├── .travis.yml ├── CONTRIBUTING.md ├── ISSUE_TEMPLATE.md ├── LICENSE ├── README.md ├── app/ │ ├── build.gradle │ ├── quality.gradle │ └── src/ │ ├── androidTest/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── com/ │ │ └── github/ │ │ └── pockethub/ │ │ └── android/ │ │ └── tests/ │ │ ├── NewsEventTextTest.java │ │ ├── ViewVisibiltyIdlingResource.kt │ │ ├── commit/ │ │ │ ├── CommitUriMatcherTest.java │ │ │ ├── CommitUtilsTest.java │ │ │ ├── CreateCommentActivityTest.java │ │ │ ├── DiffStylerTest.java │ │ │ └── FullCommitTest.java │ │ ├── gist/ │ │ │ ├── CreateCommentActivityTest.java │ │ │ ├── CreateGistActivityTest.java │ │ │ ├── GistFilesViewActivityTest.java │ │ │ ├── GistStoreTest.java │ │ │ └── GistUriMatcherTest.java │ │ ├── issue/ │ │ │ ├── CreateCommentActivityTest.java │ │ │ ├── EditIssueActivityTest.java │ │ │ ├── EditIssuesFilterActivityTest.java │ │ │ ├── IssueFilterTest.java │ │ │ ├── IssueStoreTest.java │ │ │ └── IssueUriMatcherTest.java │ │ ├── ref/ │ │ │ └── RefUtilsTest.java │ │ ├── repo/ │ │ │ ├── RecentRepositoriesTest.java │ │ │ ├── RepositoryEventMatcherTest.java │ │ │ ├── RepositoryUriMatcherTest.java │ │ │ └── SearchActivityTest.java │ │ ├── user/ │ │ │ ├── UserComparatorTest.java │ │ │ └── UserUriMatcherTest.java │ │ └── util/ │ │ └── HtmlUtilsTest.java │ ├── debug/ │ │ └── res/ │ │ └── values/ │ │ └── strings.xml │ ├── main/ │ │ ├── AndroidManifest.xml │ │ ├── assets/ │ │ │ ├── code_mirror/ │ │ │ │ ├── LICENSE │ │ │ │ ├── VERSION │ │ │ │ ├── addon/ │ │ │ │ │ ├── comment/ │ │ │ │ │ │ ├── comment.js │ │ │ │ │ │ └── continuecomment.js │ │ │ │ │ ├── dialog/ │ │ │ │ │ │ ├── dialog.css │ │ │ │ │ │ └── dialog.js │ │ │ │ │ ├── display/ │ │ │ │ │ │ ├── autorefresh.js │ │ │ │ │ │ ├── fullscreen.css │ │ │ │ │ │ ├── fullscreen.js │ │ │ │ │ │ ├── panel.js │ │ │ │ │ │ ├── placeholder.js │ │ │ │ │ │ └── rulers.js │ │ │ │ │ ├── edit/ │ │ │ │ │ │ ├── closebrackets.js │ │ │ │ │ │ ├── closetag.js │ │ │ │ │ │ ├── continuelist.js │ │ │ │ │ │ ├── matchbrackets.js │ │ │ │ │ │ ├── matchtags.js │ │ │ │ │ │ └── trailingspace.js │ │ │ │ │ ├── fold/ │ │ │ │ │ │ ├── brace-fold.js │ │ │ │ │ │ ├── comment-fold.js │ │ │ │ │ │ ├── foldcode.js │ │ │ │ │ │ ├── foldgutter.css │ │ │ │ │ │ ├── foldgutter.js │ │ │ │ │ │ ├── indent-fold.js │ │ │ │ │ │ ├── markdown-fold.js │ │ │ │ │ │ └── xml-fold.js │ │ │ │ │ ├── hint/ │ │ │ │ │ │ ├── anyword-hint.js │ │ │ │ │ │ ├── css-hint.js │ │ │ │ │ │ ├── html-hint.js │ │ │ │ │ │ ├── javascript-hint.js │ │ │ │ │ │ ├── show-hint.css │ │ │ │ │ │ ├── show-hint.js │ │ │ │ │ │ ├── sql-hint.js │ │ │ │ │ │ └── xml-hint.js │ │ │ │ │ ├── lint/ │ │ │ │ │ │ ├── coffeescript-lint.js │ │ │ │ │ │ ├── css-lint.js │ │ │ │ │ │ ├── html-lint.js │ │ │ │ │ │ ├── javascript-lint.js │ │ │ │ │ │ ├── json-lint.js │ │ │ │ │ │ ├── lint.css │ │ │ │ │ │ ├── lint.js │ │ │ │ │ │ └── yaml-lint.js │ │ │ │ │ ├── merge/ │ │ │ │ │ │ ├── merge.css │ │ │ │ │ │ └── merge.js │ │ │ │ │ ├── mode/ │ │ │ │ │ │ ├── loadmode.js │ │ │ │ │ │ ├── multiplex.js │ │ │ │ │ │ ├── multiplex_test.js │ │ │ │ │ │ ├── overlay.js │ │ │ │ │ │ └── simple.js │ │ │ │ │ ├── runmode/ │ │ │ │ │ │ ├── colorize.js │ │ │ │ │ │ ├── runmode-standalone.js │ │ │ │ │ │ ├── runmode.js │ │ │ │ │ │ └── runmode.node.js │ │ │ │ │ ├── scroll/ │ │ │ │ │ │ ├── annotatescrollbar.js │ │ │ │ │ │ ├── scrollpastend.js │ │ │ │ │ │ ├── simplescrollbars.css │ │ │ │ │ │ └── simplescrollbars.js │ │ │ │ │ ├── search/ │ │ │ │ │ │ ├── jump-to-line.js │ │ │ │ │ │ ├── match-highlighter.js │ │ │ │ │ │ ├── matchesonscrollbar.css │ │ │ │ │ │ ├── matchesonscrollbar.js │ │ │ │ │ │ ├── search.js │ │ │ │ │ │ └── searchcursor.js │ │ │ │ │ ├── selection/ │ │ │ │ │ │ ├── active-line.js │ │ │ │ │ │ ├── mark-selection.js │ │ │ │ │ │ └── selection-pointer.js │ │ │ │ │ ├── tern/ │ │ │ │ │ │ ├── tern.css │ │ │ │ │ │ ├── tern.js │ │ │ │ │ │ └── worker.js │ │ │ │ │ └── wrap/ │ │ │ │ │ └── hardwrap.js │ │ │ │ ├── lib/ │ │ │ │ │ ├── codemirror.css │ │ │ │ │ └── codemirror.js │ │ │ │ ├── mode/ │ │ │ │ │ ├── apl/ │ │ │ │ │ │ └── apl.js │ │ │ │ │ ├── asciiarmor/ │ │ │ │ │ │ └── asciiarmor.js │ │ │ │ │ ├── asn.1/ │ │ │ │ │ │ └── asn.1.js │ │ │ │ │ ├── asterisk/ │ │ │ │ │ │ └── asterisk.js │ │ │ │ │ ├── brainfuck/ │ │ │ │ │ │ └── brainfuck.js │ │ │ │ │ ├── clike/ │ │ │ │ │ │ └── clike.js │ │ │ │ │ ├── clojure/ │ │ │ │ │ │ └── clojure.js │ │ │ │ │ ├── cmake/ │ │ │ │ │ │ └── cmake.js │ │ │ │ │ ├── cobol/ │ │ │ │ │ │ └── cobol.js │ │ │ │ │ ├── coffeescript/ │ │ │ │ │ │ └── coffeescript.js │ │ │ │ │ ├── commonlisp/ │ │ │ │ │ │ └── commonlisp.js │ │ │ │ │ ├── crystal/ │ │ │ │ │ │ └── crystal.js │ │ │ │ │ ├── css/ │ │ │ │ │ │ └── css.js │ │ │ │ │ ├── cypher/ │ │ │ │ │ │ └── cypher.js │ │ │ │ │ ├── d/ │ │ │ │ │ │ └── d.js │ │ │ │ │ ├── dart/ │ │ │ │ │ │ └── dart.js │ │ │ │ │ ├── diff/ │ │ │ │ │ │ └── diff.js │ │ │ │ │ ├── django/ │ │ │ │ │ │ └── django.js │ │ │ │ │ ├── dockerfile/ │ │ │ │ │ │ └── dockerfile.js │ │ │ │ │ ├── dtd/ │ │ │ │ │ │ └── dtd.js │ │ │ │ │ ├── dylan/ │ │ │ │ │ │ └── dylan.js │ │ │ │ │ ├── ebnf/ │ │ │ │ │ │ └── ebnf.js │ │ │ │ │ ├── ecl/ │ │ │ │ │ │ └── ecl.js │ │ │ │ │ ├── eiffel/ │ │ │ │ │ │ └── eiffel.js │ │ │ │ │ ├── elm/ │ │ │ │ │ │ └── elm.js │ │ │ │ │ ├── erlang/ │ │ │ │ │ │ └── erlang.js │ │ │ │ │ ├── factor/ │ │ │ │ │ │ └── factor.js │ │ │ │ │ ├── fcl/ │ │ │ │ │ │ └── fcl.js │ │ │ │ │ ├── forth/ │ │ │ │ │ │ └── forth.js │ │ │ │ │ ├── fortran/ │ │ │ │ │ │ └── fortran.js │ │ │ │ │ ├── gas/ │ │ │ │ │ │ └── gas.js │ │ │ │ │ ├── gfm/ │ │ │ │ │ │ └── gfm.js │ │ │ │ │ ├── gherkin/ │ │ │ │ │ │ └── gherkin.js │ │ │ │ │ ├── go/ │ │ │ │ │ │ └── go.js │ │ │ │ │ ├── groovy/ │ │ │ │ │ │ └── groovy.js │ │ │ │ │ ├── haml/ │ │ │ │ │ │ └── haml.js │ │ │ │ │ ├── handlebars/ │ │ │ │ │ │ └── handlebars.js │ │ │ │ │ ├── haskell/ │ │ │ │ │ │ └── haskell.js │ │ │ │ │ ├── haskell-literate/ │ │ │ │ │ │ └── haskell-literate.js │ │ │ │ │ ├── haxe/ │ │ │ │ │ │ └── haxe.js │ │ │ │ │ ├── htmlembedded/ │ │ │ │ │ │ └── htmlembedded.js │ │ │ │ │ ├── htmlmixed/ │ │ │ │ │ │ └── htmlmixed.js │ │ │ │ │ ├── http/ │ │ │ │ │ │ └── http.js │ │ │ │ │ ├── idl/ │ │ │ │ │ │ └── idl.js │ │ │ │ │ ├── javascript/ │ │ │ │ │ │ └── javascript.js │ │ │ │ │ ├── jinja2/ │ │ │ │ │ │ └── jinja2.js │ │ │ │ │ ├── jsx/ │ │ │ │ │ │ └── jsx.js │ │ │ │ │ ├── julia/ │ │ │ │ │ │ └── julia.js │ │ │ │ │ ├── livescript/ │ │ │ │ │ │ └── livescript.js │ │ │ │ │ ├── lua/ │ │ │ │ │ │ └── lua.js │ │ │ │ │ ├── markdown/ │ │ │ │ │ │ └── markdown.js │ │ │ │ │ ├── mathematica/ │ │ │ │ │ │ └── mathematica.js │ │ │ │ │ ├── mbox/ │ │ │ │ │ │ └── mbox.js │ │ │ │ │ ├── meta.js │ │ │ │ │ ├── mirc/ │ │ │ │ │ │ └── mirc.js │ │ │ │ │ ├── mllike/ │ │ │ │ │ │ └── mllike.js │ │ │ │ │ ├── modelica/ │ │ │ │ │ │ └── modelica.js │ │ │ │ │ ├── mscgen/ │ │ │ │ │ │ └── mscgen.js │ │ │ │ │ ├── mumps/ │ │ │ │ │ │ └── mumps.js │ │ │ │ │ ├── nginx/ │ │ │ │ │ │ └── nginx.js │ │ │ │ │ ├── nsis/ │ │ │ │ │ │ └── nsis.js │ │ │ │ │ ├── ntriples/ │ │ │ │ │ │ └── ntriples.js │ │ │ │ │ ├── octave/ │ │ │ │ │ │ └── octave.js │ │ │ │ │ ├── oz/ │ │ │ │ │ │ └── oz.js │ │ │ │ │ ├── pascal/ │ │ │ │ │ │ └── pascal.js │ │ │ │ │ ├── pegjs/ │ │ │ │ │ │ └── pegjs.js │ │ │ │ │ ├── perl/ │ │ │ │ │ │ └── perl.js │ │ │ │ │ ├── php/ │ │ │ │ │ │ └── php.js │ │ │ │ │ ├── pig/ │ │ │ │ │ │ └── pig.js │ │ │ │ │ ├── powershell/ │ │ │ │ │ │ └── powershell.js │ │ │ │ │ ├── properties/ │ │ │ │ │ │ └── properties.js │ │ │ │ │ ├── protobuf/ │ │ │ │ │ │ └── protobuf.js │ │ │ │ │ ├── pug/ │ │ │ │ │ │ └── pug.js │ │ │ │ │ ├── puppet/ │ │ │ │ │ │ └── puppet.js │ │ │ │ │ ├── python/ │ │ │ │ │ │ └── python.js │ │ │ │ │ ├── q/ │ │ │ │ │ │ └── q.js │ │ │ │ │ ├── r/ │ │ │ │ │ │ └── r.js │ │ │ │ │ ├── rpm/ │ │ │ │ │ │ └── rpm.js │ │ │ │ │ ├── rst/ │ │ │ │ │ │ └── rst.js │ │ │ │ │ ├── ruby/ │ │ │ │ │ │ └── ruby.js │ │ │ │ │ ├── rust/ │ │ │ │ │ │ └── rust.js │ │ │ │ │ ├── sas/ │ │ │ │ │ │ └── sas.js │ │ │ │ │ ├── sass/ │ │ │ │ │ │ └── sass.js │ │ │ │ │ ├── scheme/ │ │ │ │ │ │ └── scheme.js │ │ │ │ │ ├── shell/ │ │ │ │ │ │ └── shell.js │ │ │ │ │ ├── sieve/ │ │ │ │ │ │ └── sieve.js │ │ │ │ │ ├── slim/ │ │ │ │ │ │ └── slim.js │ │ │ │ │ ├── smalltalk/ │ │ │ │ │ │ └── smalltalk.js │ │ │ │ │ ├── smarty/ │ │ │ │ │ │ └── smarty.js │ │ │ │ │ ├── solr/ │ │ │ │ │ │ └── solr.js │ │ │ │ │ ├── soy/ │ │ │ │ │ │ └── soy.js │ │ │ │ │ ├── sparql/ │ │ │ │ │ │ └── sparql.js │ │ │ │ │ ├── spreadsheet/ │ │ │ │ │ │ └── spreadsheet.js │ │ │ │ │ ├── sql/ │ │ │ │ │ │ └── sql.js │ │ │ │ │ ├── stex/ │ │ │ │ │ │ └── stex.js │ │ │ │ │ ├── stylus/ │ │ │ │ │ │ └── stylus.js │ │ │ │ │ ├── swift/ │ │ │ │ │ │ └── swift.js │ │ │ │ │ ├── tcl/ │ │ │ │ │ │ └── tcl.js │ │ │ │ │ ├── textile/ │ │ │ │ │ │ └── textile.js │ │ │ │ │ ├── tiddlywiki/ │ │ │ │ │ │ ├── tiddlywiki.css │ │ │ │ │ │ └── tiddlywiki.js │ │ │ │ │ ├── tiki/ │ │ │ │ │ │ ├── tiki.css │ │ │ │ │ │ └── tiki.js │ │ │ │ │ ├── toml/ │ │ │ │ │ │ └── toml.js │ │ │ │ │ ├── tornado/ │ │ │ │ │ │ └── tornado.js │ │ │ │ │ ├── troff/ │ │ │ │ │ │ └── troff.js │ │ │ │ │ ├── ttcn/ │ │ │ │ │ │ └── ttcn.js │ │ │ │ │ ├── ttcn-cfg/ │ │ │ │ │ │ └── ttcn-cfg.js │ │ │ │ │ ├── turtle/ │ │ │ │ │ │ └── turtle.js │ │ │ │ │ ├── twig/ │ │ │ │ │ │ └── twig.js │ │ │ │ │ ├── vb/ │ │ │ │ │ │ └── vb.js │ │ │ │ │ ├── vbscript/ │ │ │ │ │ │ └── vbscript.js │ │ │ │ │ ├── velocity/ │ │ │ │ │ │ └── velocity.js │ │ │ │ │ ├── verilog/ │ │ │ │ │ │ └── verilog.js │ │ │ │ │ ├── vhdl/ │ │ │ │ │ │ └── vhdl.js │ │ │ │ │ ├── vue/ │ │ │ │ │ │ └── vue.js │ │ │ │ │ ├── webidl/ │ │ │ │ │ │ └── webidl.js │ │ │ │ │ ├── xml/ │ │ │ │ │ │ └── xml.js │ │ │ │ │ ├── xquery/ │ │ │ │ │ │ └── xquery.js │ │ │ │ │ ├── yacas/ │ │ │ │ │ │ └── yacas.js │ │ │ │ │ ├── yaml/ │ │ │ │ │ │ └── yaml.js │ │ │ │ │ ├── yaml-frontmatter/ │ │ │ │ │ │ └── yaml-frontmatter.js │ │ │ │ │ └── z80/ │ │ │ │ │ └── z80.js │ │ │ │ └── theme/ │ │ │ │ ├── 3024-day.css │ │ │ │ ├── 3024-night.css │ │ │ │ ├── abcdef.css │ │ │ │ ├── ambiance-mobile.css │ │ │ │ ├── ambiance.css │ │ │ │ ├── base16-dark.css │ │ │ │ ├── base16-light.css │ │ │ │ ├── bespin.css │ │ │ │ ├── blackboard.css │ │ │ │ ├── cobalt.css │ │ │ │ ├── colorforth.css │ │ │ │ ├── dracula.css │ │ │ │ ├── eclipse.css │ │ │ │ ├── elegant.css │ │ │ │ ├── erlang-dark.css │ │ │ │ ├── hopscotch.css │ │ │ │ ├── icecoder.css │ │ │ │ ├── isotope.css │ │ │ │ ├── lesser-dark.css │ │ │ │ ├── liquibyte.css │ │ │ │ ├── material.css │ │ │ │ ├── mbo.css │ │ │ │ ├── mdn-like.css │ │ │ │ ├── midnight.css │ │ │ │ ├── monokai.css │ │ │ │ ├── neat.css │ │ │ │ ├── neo.css │ │ │ │ ├── night.css │ │ │ │ ├── panda-syntax.css │ │ │ │ ├── paraiso-dark.css │ │ │ │ ├── paraiso-light.css │ │ │ │ ├── pastel-on-dark.css │ │ │ │ ├── railscasts.css │ │ │ │ ├── rubyblue.css │ │ │ │ ├── seti.css │ │ │ │ ├── solarized.css │ │ │ │ ├── the-matrix.css │ │ │ │ ├── tomorrow-night-bright.css │ │ │ │ ├── tomorrow-night-eighties.css │ │ │ │ ├── ttcn.css │ │ │ │ ├── twilight.css │ │ │ │ ├── vibrant-ink.css │ │ │ │ ├── xq-dark.css │ │ │ │ ├── xq-light.css │ │ │ │ ├── yeti.css │ │ │ │ └── zenburn.css │ │ │ ├── github.css │ │ │ ├── intercept.js │ │ │ ├── polyfills.js │ │ │ ├── source-editor.css │ │ │ ├── source-editor.html │ │ │ └── source-editor.js │ │ ├── java/ │ │ │ └── com/ │ │ │ └── github/ │ │ │ └── pockethub/ │ │ │ └── android/ │ │ │ ├── ApplicationComponent.java │ │ │ ├── ApplicationModule.kt │ │ │ ├── GitHubModule.java │ │ │ ├── Intents.java │ │ │ ├── PocketHub.java │ │ │ ├── PocketHubModule.java │ │ │ ├── RequestCodes.java │ │ │ ├── RequestReader.java │ │ │ ├── RequestWriter.java │ │ │ ├── ResultCodes.java │ │ │ ├── accounts/ │ │ │ │ ├── AccountAuthenticator.java │ │ │ │ ├── AccountAuthenticatorService.java │ │ │ │ ├── AccountUtils.java │ │ │ │ ├── AccountsHelper.java │ │ │ │ ├── LoginActivity.java │ │ │ │ └── LoginWebViewActivity.java │ │ │ ├── core/ │ │ │ │ ├── GitHubRequest.kt │ │ │ │ ├── ItemStore.java │ │ │ │ ├── OnLoadListener.java │ │ │ │ ├── code/ │ │ │ │ │ ├── FullTree.java │ │ │ │ │ └── RefreshTreeTask.java │ │ │ │ ├── commit/ │ │ │ │ │ ├── CommitMatch.kt │ │ │ │ │ ├── CommitStore.java │ │ │ │ │ ├── CommitUriMatcher.java │ │ │ │ │ ├── CommitUtils.kt │ │ │ │ │ ├── FullCommit.java │ │ │ │ │ ├── FullCommitFile.java │ │ │ │ │ └── RefreshCommitTask.java │ │ │ │ ├── gist/ │ │ │ │ │ ├── FullGist.kt │ │ │ │ │ ├── GistEventMatcher.java │ │ │ │ │ ├── GistStore.java │ │ │ │ │ ├── GistUriMatcher.java │ │ │ │ │ └── RefreshGistTask.java │ │ │ │ ├── issue/ │ │ │ │ │ ├── FullIssue.kt │ │ │ │ │ ├── IssueEventMatcher.java │ │ │ │ │ ├── IssueFilter.java │ │ │ │ │ ├── IssueStore.java │ │ │ │ │ ├── IssueUriMatcher.java │ │ │ │ │ ├── IssueUtils.java │ │ │ │ │ └── RefreshIssueTask.java │ │ │ │ ├── ref/ │ │ │ │ │ └── RefUtils.java │ │ │ │ ├── repo/ │ │ │ │ │ ├── RepositoryEventMatcher.java │ │ │ │ │ ├── RepositoryUriMatcher.java │ │ │ │ │ └── RepositoryUtils.kt │ │ │ │ └── user/ │ │ │ │ ├── UserComparator.java │ │ │ │ ├── UserEventMatcher.java │ │ │ │ └── UserUriMatcher.java │ │ │ ├── dagger/ │ │ │ │ ├── ActivityBuilder.java │ │ │ │ ├── ActivityScope.java │ │ │ │ ├── CommitCompareViewFragmentProvider.java │ │ │ │ ├── CommitViewFragmentProvider.java │ │ │ │ ├── CreateCommentFragmentProvider.java │ │ │ │ ├── DialogFragmentBuilder.java │ │ │ │ ├── FiltersViewFragmentProvider.java │ │ │ │ ├── GistFilesViewFragmentProvider.java │ │ │ │ ├── GistsPagerFragmentProvider.java │ │ │ │ ├── GistsViewFragmentProvider.java │ │ │ │ ├── HomePagerFragmentProvider.java │ │ │ │ ├── IssueBrowseFragmentProvider.java │ │ │ │ ├── IssueDashboardPagerFragmentProvider.java │ │ │ │ ├── IssueSearchFragmentProvider.java │ │ │ │ ├── IssuesViewFragmentProvider.java │ │ │ │ ├── MainFragmentProvider.java │ │ │ │ ├── NotificationFragmentProvider.java │ │ │ │ ├── RepositoryContributorsFragmentProvider.java │ │ │ │ ├── RepositoryViewFragmentProvider.java │ │ │ │ ├── SearchActivityFragmentProvider.java │ │ │ │ ├── ServiceBuilder.java │ │ │ │ └── UserViewFragmentProvider.java │ │ │ ├── markwon/ │ │ │ │ ├── AlignHandler.java │ │ │ │ ├── AsyncDrawableSchedulerPlugin.java │ │ │ │ ├── FontResolver.java │ │ │ │ ├── GifAwareGlideStore.java │ │ │ │ ├── MarkwonUtils.java │ │ │ │ ├── SpanLinkPlugin.java │ │ │ │ ├── SvgDecoder.java │ │ │ │ ├── SvgDrawableTranscoder.java │ │ │ │ └── SvgModule.java │ │ │ ├── persistence/ │ │ │ │ ├── AccountDataManager.java │ │ │ │ ├── DatabaseCache.kt │ │ │ │ ├── OrganizationRepositories.kt │ │ │ │ ├── OrganizationRepositoriesFactory.java │ │ │ │ ├── Organizations.kt │ │ │ │ └── PersistableResource.java │ │ │ ├── rx/ │ │ │ │ ├── AutoDisposeUtils.java │ │ │ │ └── RxProgress.java │ │ │ ├── sync/ │ │ │ │ ├── ContentProviderAdapter.java │ │ │ │ ├── SyncAdapter.java │ │ │ │ ├── SyncAdapterService.java │ │ │ │ └── SyncCampaign.java │ │ │ ├── ui/ │ │ │ │ ├── ConfirmDialogFragment.java │ │ │ │ ├── DialogResultListener.java │ │ │ │ ├── FragmentProvider.java │ │ │ │ ├── MainActivity.kt │ │ │ │ ├── NewsFragment.kt │ │ │ │ ├── SingleChoiceDialogFragment.java │ │ │ │ ├── TextWatcherAdapter.java │ │ │ │ ├── ViewPager.java │ │ │ │ ├── WebView.java │ │ │ │ ├── base/ │ │ │ │ │ ├── AccountAuthenticatorAppCompatActivity.java │ │ │ │ │ ├── BaseActivity.kt │ │ │ │ │ ├── BaseFragment.kt │ │ │ │ │ ├── DialogFragmentHelper.java │ │ │ │ │ ├── FragmentPagerAdapter.java │ │ │ │ │ └── FragmentStatePagerAdapter.java │ │ │ │ ├── code/ │ │ │ │ │ └── RepositoryCodeFragment.kt │ │ │ │ ├── comment/ │ │ │ │ │ ├── CommentPreviewPagerAdapter.java │ │ │ │ │ ├── CreateCommentActivity.kt │ │ │ │ │ ├── DeleteCommentListener.java │ │ │ │ │ ├── EditCommentListener.java │ │ │ │ │ ├── RawCommentFragment.kt │ │ │ │ │ └── RenderedCommentFragment.kt │ │ │ │ ├── commit/ │ │ │ │ │ ├── CommitCompareListFragment.kt │ │ │ │ │ ├── CommitCompareViewActivity.java │ │ │ │ │ ├── CommitDiffListFragment.kt │ │ │ │ │ ├── CommitFileComparator.java │ │ │ │ │ ├── CommitFileViewActivity.kt │ │ │ │ │ ├── CommitListFragment.kt │ │ │ │ │ ├── CommitPagerAdapter.java │ │ │ │ │ ├── CommitViewActivity.kt │ │ │ │ │ ├── CreateCommentActivity.java │ │ │ │ │ └── DiffStyler.java │ │ │ │ ├── gist/ │ │ │ │ │ ├── CreateCommentActivity.java │ │ │ │ │ ├── CreateGistActivity.kt │ │ │ │ │ ├── EditCommentActivity.java │ │ │ │ │ ├── GistFileFragment.kt │ │ │ │ │ ├── GistFilesPagerAdapter.java │ │ │ │ │ ├── GistFilesViewActivity.kt │ │ │ │ │ ├── GistFragment.kt │ │ │ │ │ ├── GistQueriesPagerAdapter.java │ │ │ │ │ ├── GistsFragment.kt │ │ │ │ │ ├── GistsPagerAdapter.java │ │ │ │ │ ├── GistsPagerFragment.kt │ │ │ │ │ ├── GistsViewActivity.kt │ │ │ │ │ ├── MyGistsFragment.java │ │ │ │ │ ├── PublicGistsFragment.java │ │ │ │ │ └── StarredGistsFragment.java │ │ │ │ ├── helpers/ │ │ │ │ │ ├── ItemListHandler.kt │ │ │ │ │ ├── ListFetcher.kt │ │ │ │ │ ├── PagedListFetcher.kt │ │ │ │ │ ├── PagedScrollListener.kt │ │ │ │ │ ├── PagerHandler.kt │ │ │ │ │ └── ResourceLoadingIndicator.kt │ │ │ │ ├── issue/ │ │ │ │ │ ├── AssigneeDialog.java │ │ │ │ │ ├── AssigneeDialogFragment.java │ │ │ │ │ ├── CreateCommentActivity.java │ │ │ │ │ ├── DashboardIssueFragment.kt │ │ │ │ │ ├── EditAssigneeTask.java │ │ │ │ │ ├── EditCommentActivity.java │ │ │ │ │ ├── EditIssueActivity.kt │ │ │ │ │ ├── EditIssuesFilterActivity.kt │ │ │ │ │ ├── EditLabelsTask.java │ │ │ │ │ ├── EditMilestoneTask.java │ │ │ │ │ ├── EditStateTask.java │ │ │ │ │ ├── FilterListFragment.kt │ │ │ │ │ ├── FiltersViewActivity.java │ │ │ │ │ ├── IssueBrowseActivity.java │ │ │ │ │ ├── IssueDashboardPagerAdapter.java │ │ │ │ │ ├── IssueDashboardPagerFragment.kt │ │ │ │ │ ├── IssueFragment.kt │ │ │ │ │ ├── IssueSearchActivity.java │ │ │ │ │ ├── IssueSearchSuggestionsProvider.java │ │ │ │ │ ├── IssuesFragment.kt │ │ │ │ │ ├── IssuesPagerAdapter.java │ │ │ │ │ ├── IssuesViewActivity.kt │ │ │ │ │ ├── LabelDrawableSpan.kt │ │ │ │ │ ├── LabelsDialog.java │ │ │ │ │ ├── LabelsDialogFragment.java │ │ │ │ │ ├── MilestoneDialog.java │ │ │ │ │ ├── MilestoneDialogFragment.kt │ │ │ │ │ └── SearchIssueListFragment.kt │ │ │ │ ├── item/ │ │ │ │ │ ├── ContributorItem.kt │ │ │ │ │ ├── GitHubCommentItem.kt │ │ │ │ │ ├── LoadingItem.kt │ │ │ │ │ ├── TextItem.kt │ │ │ │ │ ├── UserItem.kt │ │ │ │ │ ├── code/ │ │ │ │ │ │ ├── BlobItem.kt │ │ │ │ │ │ ├── FolderItem.kt │ │ │ │ │ │ └── PathHeaderItem.kt │ │ │ │ │ ├── commit/ │ │ │ │ │ │ ├── CommitCommentItem.kt │ │ │ │ │ │ ├── CommitFileHeaderItem.kt │ │ │ │ │ │ ├── CommitFileLineItem.kt │ │ │ │ │ │ ├── CommitHeaderItem.kt │ │ │ │ │ │ ├── CommitItem.kt │ │ │ │ │ │ └── CommitParentItem.kt │ │ │ │ │ ├── dialog/ │ │ │ │ │ │ ├── AssigneeDialogItem.kt │ │ │ │ │ │ ├── LabelDialogItem.kt │ │ │ │ │ │ ├── MilestoneDialogItem.kt │ │ │ │ │ │ └── RefDialogItem.kt │ │ │ │ │ ├── gist/ │ │ │ │ │ │ ├── GistFileItem.kt │ │ │ │ │ │ ├── GistHeaderItem.kt │ │ │ │ │ │ └── GistItem.kt │ │ │ │ │ ├── issue/ │ │ │ │ │ │ ├── IssueDashboardItem.kt │ │ │ │ │ │ ├── IssueEventItem.kt │ │ │ │ │ │ ├── IssueFilterHeaderItem.kt │ │ │ │ │ │ ├── IssueFilterItem.kt │ │ │ │ │ │ ├── IssueHeaderItem.kt │ │ │ │ │ │ └── IssueItem.kt │ │ │ │ │ ├── news/ │ │ │ │ │ │ ├── CommitCommentEventItem.kt │ │ │ │ │ │ ├── CreateEventItem.kt │ │ │ │ │ │ ├── DeleteEventItem.kt │ │ │ │ │ │ ├── FollowEventItem.kt │ │ │ │ │ │ ├── ForkEventItem.kt │ │ │ │ │ │ ├── GistEventItem.kt │ │ │ │ │ │ ├── GollumEventItem.kt │ │ │ │ │ │ ├── IssueCommentEventItem.kt │ │ │ │ │ │ ├── IssuesEventItem.kt │ │ │ │ │ │ ├── MemberEventItem.kt │ │ │ │ │ │ ├── NewsItem.kt │ │ │ │ │ │ ├── PublicEventItem.kt │ │ │ │ │ │ ├── PullRequestEventItem.kt │ │ │ │ │ │ ├── PullRequestReviewCommentEventItem.kt │ │ │ │ │ │ ├── PushEventItem.kt │ │ │ │ │ │ ├── ReleaseEventItem.kt │ │ │ │ │ │ ├── TeamAddEventItem.kt │ │ │ │ │ │ └── WatchEventItem.kt │ │ │ │ │ ├── notification/ │ │ │ │ │ │ ├── NotificationHeaderItem.kt │ │ │ │ │ │ └── NotificationItem.kt │ │ │ │ │ └── repository/ │ │ │ │ │ ├── RepositoryHeaderItem.kt │ │ │ │ │ └── RepositoryItem.kt │ │ │ │ ├── notification/ │ │ │ │ │ ├── NotificationActivity.kt │ │ │ │ │ ├── NotificationListFragment.kt │ │ │ │ │ ├── NotificationPagerAdapter.java │ │ │ │ │ └── NotificationReadListener.java │ │ │ │ ├── ref/ │ │ │ │ │ ├── BranchFileViewActivity.kt │ │ │ │ │ ├── RefDialog.java │ │ │ │ │ └── RefDialogFragment.java │ │ │ │ ├── repo/ │ │ │ │ │ ├── RecentRepositories.java │ │ │ │ │ ├── RepositoryContributorsActivity.java │ │ │ │ │ ├── RepositoryContributorsFragment.kt │ │ │ │ │ ├── RepositoryListFragment.kt │ │ │ │ │ ├── RepositoryNewsFragment.java │ │ │ │ │ ├── RepositoryPagerAdapter.java │ │ │ │ │ ├── RepositoryReadmeFragment.kt │ │ │ │ │ ├── RepositoryViewActivity.kt │ │ │ │ │ └── UserRepositoryListFragment.kt │ │ │ │ ├── search/ │ │ │ │ │ ├── RepositorySearchSuggestionsProvider.java │ │ │ │ │ ├── SearchActivity.kt │ │ │ │ │ ├── SearchPagerAdapter.java │ │ │ │ │ ├── SearchRepositoryListFragment.kt │ │ │ │ │ └── SearchUserListFragment.kt │ │ │ │ ├── user/ │ │ │ │ │ ├── FollowersFragment.kt │ │ │ │ │ ├── FollowingFragment.kt │ │ │ │ │ ├── HomePagerAdapter.kt │ │ │ │ │ ├── HomePagerFragment.kt │ │ │ │ │ ├── MembersFragment.kt │ │ │ │ │ ├── MyFollowersFragment.java │ │ │ │ │ ├── MyFollowingFragment.java │ │ │ │ │ ├── OrganizationNewsFragment.java │ │ │ │ │ ├── OrganizationSelectionListener.java │ │ │ │ │ ├── OrganizationSelectionProvider.java │ │ │ │ │ ├── PagedUserFragment.kt │ │ │ │ │ ├── UriLauncherActivity.java │ │ │ │ │ ├── UserCreatedNewsFragment.java │ │ │ │ │ ├── UserFollowersFragment.java │ │ │ │ │ ├── UserFollowingFragment.java │ │ │ │ │ ├── UserNewsFragment.java │ │ │ │ │ ├── UserPagerAdapter.java │ │ │ │ │ ├── UserReceivedNewsFragment.java │ │ │ │ │ └── UserViewActivity.kt │ │ │ │ └── view/ │ │ │ │ ├── LinkTextView.kt │ │ │ │ └── OcticonTextView.java │ │ │ └── util/ │ │ │ ├── AvatarLoader.kt │ │ │ ├── ConvertUtils.java │ │ │ ├── GravatarUtils.java │ │ │ ├── HtmlUtils.java │ │ │ ├── HttpImageGetter.java │ │ │ ├── ImageBinPoster.kt │ │ │ ├── ImageUtils.java │ │ │ ├── InfoUtils.java │ │ │ ├── MarkdownLoader.java │ │ │ ├── MarkdownUtils.java │ │ │ ├── PermissionsUtils.java │ │ │ ├── PreferenceUtils.java │ │ │ ├── RxPageUtil.java │ │ │ ├── ServiceUtils.java │ │ │ ├── ShareUtils.java │ │ │ ├── SourceEditor.java │ │ │ ├── TimeUtils.java │ │ │ ├── ToastUtils.java │ │ │ └── android/ │ │ │ └── text/ │ │ │ └── SpannableStringBuilder.kt │ │ ├── res/ │ │ │ ├── color/ │ │ │ │ └── color_navigation_view_icon.xml │ │ │ ├── drawable/ │ │ │ │ ├── actionbar_spinner.xml │ │ │ │ ├── diff_add_background.xml │ │ │ │ ├── diff_marker_background.xml │ │ │ │ ├── diff_remove_background.xml │ │ │ │ ├── edit_text_background.xml │ │ │ │ ├── edit_text_cursor.xml │ │ │ │ ├── footer_selector.xml │ │ │ │ ├── ic_add_a_photo.xml │ │ │ │ ├── ic_notifications_black.xml │ │ │ │ ├── ic_search_white_24dp.xml │ │ │ │ ├── inset_background.xml │ │ │ │ ├── label_background.xml │ │ │ │ ├── list_divider_5dp.xml │ │ │ │ ├── list_item_background.xml │ │ │ │ ├── milestone_background.xml │ │ │ │ ├── milestone_closed_background.xml │ │ │ │ ├── section_background.xml │ │ │ │ ├── section_selected_background.xml │ │ │ │ └── section_selector.xml │ │ │ ├── layout/ │ │ │ │ ├── activity_commit_file_view.xml │ │ │ │ ├── activity_gist_create.xml │ │ │ │ ├── activity_issue_edit.xml │ │ │ │ ├── activity_issue_search.xml │ │ │ │ ├── activity_issues_filter_edit.xml │ │ │ │ ├── activity_main.xml │ │ │ │ ├── activity_pager.xml │ │ │ │ ├── activity_pager_with_title.xml │ │ │ │ ├── activity_repo_contributors.xml │ │ │ │ ├── activity_repo_issue_list.xml │ │ │ │ ├── adapter_fenced_code_block.xml │ │ │ │ ├── blob_item.xml │ │ │ │ ├── collaborator_item.xml │ │ │ │ ├── comment.xml │ │ │ │ ├── comment_event.xml │ │ │ │ ├── comment_event_item.xml │ │ │ │ ├── comment_item.xml │ │ │ │ ├── commit_comment_item.xml │ │ │ │ ├── commit_compare.xml │ │ │ │ ├── commit_compare_file_details_header.xml │ │ │ │ ├── commit_details_header.xml │ │ │ │ ├── commit_diff_file_header.xml │ │ │ │ ├── commit_diff_line.xml │ │ │ │ ├── commit_file_details_header.xml │ │ │ │ ├── commit_header.xml │ │ │ │ ├── commit_item.xml │ │ │ │ ├── commit_parent_item.xml │ │ │ │ ├── contributor_item.xml │ │ │ │ ├── dashboard_issue_item.xml │ │ │ │ ├── diff_comment_item.xml │ │ │ │ ├── diff_line_dialog.xml │ │ │ │ ├── drawer_header.xml │ │ │ │ ├── folder_item.xml │ │ │ │ ├── fragment_comment_create.xml │ │ │ │ ├── fragment_comment_list.xml │ │ │ │ ├── fragment_comment_preview.xml │ │ │ │ ├── fragment_commit_diff_list.xml │ │ │ │ ├── fragment_commit_list.xml │ │ │ │ ├── fragment_gist_file_view.xml │ │ │ │ ├── fragment_item_list.xml │ │ │ │ ├── fragment_repo_code.xml │ │ │ │ ├── gist_file_item.xml │ │ │ │ ├── gist_header.xml │ │ │ │ ├── gist_item.xml │ │ │ │ ├── issue_details.xml │ │ │ │ ├── issue_header.xml │ │ │ │ ├── issue_number.xml │ │ │ │ ├── issues_filter_details.xml │ │ │ │ ├── issues_filter_header.xml │ │ │ │ ├── issues_filter_item.xml │ │ │ │ ├── issues_filter_list.xml │ │ │ │ ├── label_item.xml │ │ │ │ ├── loading_item.xml │ │ │ │ ├── login.xml │ │ │ │ ├── markwon_adapter.xml │ │ │ │ ├── markwon_adapter_test.xml │ │ │ │ ├── markwon_table_block.xml │ │ │ │ ├── markwon_table_cell.xml │ │ │ │ ├── milestone.xml │ │ │ │ ├── milestone_item.xml │ │ │ │ ├── news_item.xml │ │ │ │ ├── notification_item.xml │ │ │ │ ├── notification_item_header.xml │ │ │ │ ├── pager_with_tabs.xml │ │ │ │ ├── path_item.xml │ │ │ │ ├── ref_footer.xml │ │ │ │ ├── ref_item.xml │ │ │ │ ├── repo_details.xml │ │ │ │ ├── repo_dialog.xml │ │ │ │ ├── repo_header_item.xml │ │ │ │ ├── repo_issue_item.xml │ │ │ │ ├── tabbed_progress_pager.xml │ │ │ │ ├── user_item.xml │ │ │ │ └── user_repo_item.xml │ │ │ ├── menu/ │ │ │ │ ├── activity_comment.xml │ │ │ │ ├── activity_create_gist.xml │ │ │ │ ├── activity_file_view.xml │ │ │ │ ├── activity_issue_edit.xml │ │ │ │ ├── activity_issue_filter.xml │ │ │ │ ├── activity_login.xml │ │ │ │ ├── activity_main.xml │ │ │ │ ├── activity_repository.xml │ │ │ │ ├── activity_search.xml │ │ │ │ ├── activity_user_follow.xml │ │ │ │ ├── fragment_code_view.xml │ │ │ │ ├── fragment_commit_view.xml │ │ │ │ ├── fragment_gist_view.xml │ │ │ │ ├── fragment_gists.xml │ │ │ │ ├── fragment_issue_view.xml │ │ │ │ ├── fragment_issues.xml │ │ │ │ ├── fragment_refresh.xml │ │ │ │ └── navigation.xml │ │ │ ├── values/ │ │ │ │ ├── colors.xml │ │ │ │ ├── dimens.xml │ │ │ │ ├── strings.xml │ │ │ │ ├── styles.xml │ │ │ │ ├── theme.xml │ │ │ │ └── typeface.xml │ │ │ ├── values-bg/ │ │ │ │ └── strings.xml │ │ │ ├── values-cs/ │ │ │ │ └── strings.xml │ │ │ ├── values-de/ │ │ │ │ └── strings.xml │ │ │ ├── values-el/ │ │ │ │ └── strings.xml │ │ │ ├── values-es/ │ │ │ │ └── strings.xml │ │ │ ├── values-fr/ │ │ │ │ └── strings.xml │ │ │ ├── values-hu/ │ │ │ │ └── strings.xml │ │ │ ├── values-is/ │ │ │ │ └── strings.xml │ │ │ ├── values-it/ │ │ │ │ └── strings.xml │ │ │ ├── values-iw/ │ │ │ │ └── strings.xml │ │ │ ├── values-ja/ │ │ │ │ └── strings.xml │ │ │ ├── values-ko/ │ │ │ │ └── strings.xml │ │ │ ├── values-no/ │ │ │ │ └── strings.xml │ │ │ ├── values-pl/ │ │ │ │ └── strings.xml │ │ │ ├── values-pt/ │ │ │ │ └── strings.xml │ │ │ ├── values-ro/ │ │ │ │ └── strings.xml │ │ │ ├── values-ru/ │ │ │ │ └── strings.xml │ │ │ ├── values-sk/ │ │ │ │ └── strings.xml │ │ │ ├── values-sv/ │ │ │ │ └── strings.xml │ │ │ ├── values-tr/ │ │ │ │ └── strings.xml │ │ │ ├── values-uk/ │ │ │ │ └── strings.xml │ │ │ ├── values-v21/ │ │ │ │ └── dimens.xml │ │ │ ├── values-v23/ │ │ │ │ └── styles.xml │ │ │ ├── values-zh-rCN/ │ │ │ │ └── strings.xml │ │ │ ├── values-zh-rTW/ │ │ │ │ └── strings.xml │ │ │ └── xml/ │ │ │ ├── authenticator.xml │ │ │ ├── searchable_issues.xml │ │ │ ├── searchable_repos_users.xml │ │ │ └── sync_adapter.xml │ │ └── sqldelight/ │ │ └── com.github.pockethub.android/ │ │ ├── 10.sqm │ │ ├── 11.sqm │ │ ├── 12.sqm │ │ ├── 9.sqm │ │ ├── issue_filter.sq │ │ ├── organizations.sq │ │ └── repositories.sq │ └── test/ │ └── java/ │ └── com/ │ └── github/ │ └── pockethub/ │ └── android/ │ ├── AccountManagerShadow.java │ ├── ui/ │ │ └── MainActivityTest.java │ └── util/ │ └── ConvertUtilsTest.java ├── build.gradle ├── gradle/ │ └── wrapper/ │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradle.properties ├── gradlew ├── gradlew.bat ├── proguard.cfg ├── script/ │ └── style/ │ └── checkstyle.xml └── settings.gradle
Showing preview only (211K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (2210 symbols across 333 files)
FILE: app/src/androidTest/java/com/github/pockethub/android/tests/NewsEventTextTest.java
class NewsEventTextTest (line 45) | @RunWith(AndroidJUnit4.class)
method setUp (line 59) | @Before
method createEvent (line 71) | private GitHubEvent createEvent(GitHubEventType type, GitHubPayload pa...
method verify (line 82) | private void verify(String expected) {
method updateView (line 88) | private void updateView(GitHubEvent event) {
method testCommitCommentEvent (line 103) | @Test
method testCreateRepositoryEvent (line 116) | @Test
method testCreateBranchEvent (line 132) | @Test
method testDelete (line 149) | @Test
method testFollow (line 166) | @Test
method testGist (line 186) | @Test
method testWiki (line 207) | @Test
method testIssueComment (line 219) | @Test
method testIssue (line 239) | @Test
method testAddMember (line 260) | @Test
method testOpenSourced (line 280) | @Test
method testWatch (line 292) | @Test
method testPullRequest (line 304) | @Test
method testPush (line 321) | @Test
method testTeamAdd (line 338) | @Test
FILE: app/src/androidTest/java/com/github/pockethub/android/tests/commit/CommitUriMatcherTest.java
class CommitUriMatcherTest (line 34) | @RunWith(AndroidJUnit4.class)
method testEmptyUri (line 41) | @Test
method testNonHexId (line 49) | public void testNonHexId() {
method testHttpUri (line 57) | @Test
method testHttpsUri (line 72) | @Test
method testCommentUri (line 87) | @Test
FILE: app/src/androidTest/java/com/github/pockethub/android/tests/commit/CommitUtilsTest.java
class CommitUtilsTest (line 36) | @SmallTest
method testAbbreviate (line 42) | @Test
method testGetName (line 67) | @Test
method testIsValidCommit (line 81) | @Test
method testGetAuthor (line 93) | @Test
method testGetCommitter (line 126) | @Test
method testGetAuthorDate (line 168) | @Test
method testGetCommitterDate (line 203) | @Test
FILE: app/src/androidTest/java/com/github/pockethub/android/tests/commit/CreateCommentActivityTest.java
class CreateCommentActivityTest (line 39) | public class CreateCommentActivityTest {
method setUp (line 45) | @Before
method testEmptyCommentIsProhibited (line 62) | @Test
FILE: app/src/androidTest/java/com/github/pockethub/android/tests/commit/DiffStylerTest.java
class DiffStylerTest (line 37) | @SmallTest
method compareStyled (line 40) | private void compareStyled(String patch) throws IOException {
method testEmptyFiles (line 66) | @Test
method testEmptyPatch (line 78) | @Test
method testOnlyNewline (line 97) | @Test
method testEmptyPatchLineWithOtherValidLines (line 107) | @Test
method testTrailingEmptyLine (line 117) | @Test
method testOnlyNewlines (line 127) | @Test
method testNoTrailingNewlineAfterSecondLine (line 137) | @Test
method testNoTrailingNewline (line 147) | @Test
method testFormattedPatch (line 157) | @Test
FILE: app/src/androidTest/java/com/github/pockethub/android/tests/commit/FullCommitTest.java
class FullCommitTest (line 36) | @SmallTest
method testSingleLineCommentSingleFile (line 42) | @Test
method testSingleCommentSingleFile (line 68) | @Test
method testSingleCommentNoFiles (line 89) | @Test
method testNoCommentsSingleFile (line 104) | @Test
method testBothTypesOfComments (line 122) | @Test
FILE: app/src/androidTest/java/com/github/pockethub/android/tests/gist/CreateCommentActivityTest.java
class CreateCommentActivityTest (line 39) | public class CreateCommentActivityTest {
method setUp (line 45) | @Before
method testEmptyCommentIsProhibited (line 64) | @Test
FILE: app/src/androidTest/java/com/github/pockethub/android/tests/gist/CreateGistActivityTest.java
class CreateGistActivityTest (line 37) | public class CreateGistActivityTest {
method testCreateWithInitialText (line 46) | @Test
method testCreateWithNoInitialText (line 62) | @Test
FILE: app/src/androidTest/java/com/github/pockethub/android/tests/gist/GistFilesViewActivityTest.java
class GistFilesViewActivityTest (line 40) | public class GistFilesViewActivityTest {
method setUp (line 50) | @Before
method testChangingPages (line 84) | @Test
FILE: app/src/androidTest/java/com/github/pockethub/android/tests/gist/GistStoreTest.java
class GistStoreTest (line 30) | @SmallTest
method testReuseIssue (line 36) | @Test
FILE: app/src/androidTest/java/com/github/pockethub/android/tests/gist/GistUriMatcherTest.java
class GistUriMatcherTest (line 31) | @SmallTest
method testEmptyUri (line 37) | @Test
method testNonGistId (line 45) | @Test
method testPublicGist (line 58) | @Test
method testPrivateGist (line 69) | @Test
FILE: app/src/androidTest/java/com/github/pockethub/android/tests/issue/CreateCommentActivityTest.java
class CreateCommentActivityTest (line 38) | public class CreateCommentActivityTest {
method setUp (line 44) | @Before
method testEmptyCommentIsProhibited (line 64) | @Test
FILE: app/src/androidTest/java/com/github/pockethub/android/tests/issue/EditIssueActivityTest.java
class EditIssueActivityTest (line 42) | public class EditIssueActivityTest {
method setUp (line 48) | @Before
method testSaveMenuEnabled (line 60) | @Test
FILE: app/src/androidTest/java/com/github/pockethub/android/tests/issue/EditIssuesFilterActivityTest.java
class EditIssuesFilterActivityTest (line 31) | public class EditIssuesFilterActivityTest {
method setUp (line 37) | @Before
FILE: app/src/androidTest/java/com/github/pockethub/android/tests/issue/IssueFilterTest.java
class IssueFilterTest (line 34) | @SmallTest
method testEqualFilter (line 40) | @Test
FILE: app/src/androidTest/java/com/github/pockethub/android/tests/issue/IssueStoreTest.java
class IssueStoreTest (line 32) | @SmallTest
method testReuseIssue (line 38) | @Test
FILE: app/src/androidTest/java/com/github/pockethub/android/tests/issue/IssueUriMatcherTest.java
class IssueUriMatcherTest (line 31) | @SmallTest
method testEmptyUri (line 37) | @Test
method testNonNumericIssueNumber (line 45) | @Test
method testHttpUri (line 54) | @Test
method testPullUri (line 69) | @Test
method testHttpsUri (line 84) | @Test
method testCommentUri (line 99) | @Test
FILE: app/src/androidTest/java/com/github/pockethub/android/tests/ref/RefUtilsTest.java
class RefUtilsTest (line 32) | @SmallTest
method testIsBranch (line 38) | @Test
method testIsTag (line 52) | @Test
method testIsValid (line 66) | @Test
method testGetName (line 81) | @Test
method testGetPath (line 100) | @Test
method createGitReference (line 116) | private GitReference createGitReference(String ref){
FILE: app/src/androidTest/java/com/github/pockethub/android/tests/repo/RecentRepositoriesTest.java
class RecentRepositoriesTest (line 31) | @SmallTest
method testBadInput (line 37) | @Test
method testMaxReached (line 51) | @Test
method testIO (line 76) | @Test
method testScopedStorage (line 94) | @Test
FILE: app/src/androidTest/java/com/github/pockethub/android/tests/repo/RepositoryEventMatcherTest.java
class RepositoryEventMatcherTest (line 33) | @SmallTest
method testIncompleteRepositoryFork (line 39) | @Test
FILE: app/src/androidTest/java/com/github/pockethub/android/tests/repo/RepositoryUriMatcherTest.java
class RepositoryUriMatcherTest (line 30) | public class RepositoryUriMatcherTest {
method testEmptyUri (line 35) | @Test
method testUriWithNoOnwer (line 43) | @Test
method testUriWithNoName (line 56) | @Test
method testHttpUriWithOwnerAndName (line 67) | @Test
method testHttpsUriWithOwnerAndName (line 80) | @Test
method testInvalidOwner (line 93) | @Test
FILE: app/src/androidTest/java/com/github/pockethub/android/tests/repo/SearchActivityTest.java
class SearchActivityTest (line 30) | public class SearchActivityTest {
method setUp (line 36) | @Before
FILE: app/src/androidTest/java/com/github/pockethub/android/tests/user/UserComparatorTest.java
class UserComparatorTest (line 30) | @SmallTest
method testLoginMatch (line 36) | @Test
method testNoLoginMatch (line 58) | @Test
method createUser (line 69) | private User createUser(String login){
FILE: app/src/androidTest/java/com/github/pockethub/android/tests/user/UserUriMatcherTest.java
class UserUriMatcherTest (line 30) | public class UserUriMatcherTest {
method testEmptyUri (line 35) | @Test
method testUriWithNoName (line 43) | @Test
method testHttpUriWithName (line 54) | @Test
method testHttpsUriWithName (line 65) | @Test
method testUriWithTrailingSlash (line 76) | @Test
method testUriWithTrailingSlashes (line 87) | @Test
FILE: app/src/androidTest/java/com/github/pockethub/android/tests/util/HtmlUtilsTest.java
class HtmlUtilsTest (line 27) | public class HtmlUtilsTest {
method format (line 29) | private String format(String html) {
method testToggleRemoved (line 39) | @Test
method testTogglesRemoved (line 48) | @Test
method testEmailQuoted (line 57) | @Test
method testEmailFragment (line 67) | @Test
method testEmailFragments (line 76) | @Test
method testTrailingEmailFragment (line 85) | @Test
method testLeadingBreak (line 94) | @Test
method testTrailingBreak (line 103) | @Test
method testWrappedBreaks (line 112) | @Test
method testWrappedParagraphs (line 121) | @Test
method testParagraphReplacedWithBreak (line 130) | @Test
method testEmReplacedWithI (line 139) | @Test
method testStrongReplacedWithB (line 148) | @Test
method testLeadingWhitespace (line 157) | @Test
method testTrailingWhitespace (line 166) | @Test
method testWrappedWhitetspace (line 175) | @Test
method testPreWithNoWhitespace (line 184) | @Test
method testPreWithSpaces (line 193) | @Test
method testPreWithTabs (line 202) | @Test
method testPreWithNewline (line 211) | @Test
method testPreWithAllWhitepsace (line 220) | @Test
method testMultiplePresEscaped (line 230) | @Test
method testFormatPreCodeOnly (line 241) | @Test
FILE: app/src/main/assets/code_mirror/addon/comment/comment.js
function w (line 1) | function w(a){a=a.search(q);return-1==a?0:a}
function D (line 1) | function D(a,d,b){return/\bstring\b/.test(a.getTokenTypeAt(k(d.line,0)))...
FILE: app/src/main/assets/code_mirror/addon/comment/continuecomment.js
function q (line 1) | function q(b){if(b.getOption("disableInput"))return e.Pass;for(var d=b.l...
function r (line 3) | function r(b){return(b=b.getOption("continueComments"))&&"object"==typeo...
FILE: app/src/main/assets/code_mirror/addon/dialog/dialog.js
function l (line 1) | function l(a,c,b){a=a.getWrapperElement().appendChild(document.createEle...
function m (line 1) | function m(a,c){a.state.currentNotificationClose&&
function e (line 2) | function e(a){if("string"==typeof a)d.value=a;else if(!h&&(h=!0,f.parent...
function e (line 3) | function e(){h||(h=!0,f.parentNode.removeChild(f),
function b (line 4) | function b(){f||(f=!0,clearTimeout(h),e.parentNode.removeChild(e))}
FILE: app/src/main/assets/code_mirror/addon/display/autorefresh.js
function f (line 1) | function f(b,a){function d(){b.display.wrapper.offsetHeight?(e(b,a),b.di...
function e (line 2) | function e(b,a){clearTimeout(a.timeout);c.off(window,"mouseup",a.hurry);...
FILE: app/src/main/assets/code_mirror/addon/display/panel.js
function f (line 1) | function f(a,b,c,d){this.cm=a;this.node=b;this.options=c;this.height=d;t...
function h (line 1) | function h(a){var b=a.getWrapperElement(),c=window.getComputedStyle?wind...
FILE: app/src/main/assets/code_mirror/addon/display/placeholder.js
function f (line 1) | function f(a){a.state.placeholder&&(a.state.placeholder.parentNode.remov...
function h (line 1) | function h(a){f(a);var c=a.state.placeholder=document.createElement("pre...
function g (line 2) | function g(a){k(a)&&h(a)}
function e (line 2) | function e(a){var c=a.getWrapperElement(),b=k(a);c.className=c.className...
function k (line 2) | function k(a){return 1===a.lineCount()&&""===a.getLine(0)}
FILE: app/src/main/assets/code_mirror/addon/display/rulers.js
function e (line 1) | function e(a){a.state.rulerDiv.textContent="";var h=a.getOption("rulers"...
FILE: app/src/main/assets/code_mirror/addon/edit/closebrackets.js
function r (line 1) | function r(b,a){return"pairs"==a&&"string"==typeof b?b:"object"==typeof ...
function z (line 1) | function z(b){return function(a){return A(a,b)}}
function u (line 1) | function u(b){var a=b.state.closeBrackets;return a?b.getModeAt(b.getCurs...
function A (line 1) | function A(b,a){var c=u(b);if(!c||b.getOption("disableInput"))return f.P...
function C (line 4) | function C(b,a){b=a.lastIndexOf(b);return-1<b&&1==b%2}
function y (line 4) | function y(b,a){b=b.getRange(k(a.line,a.ch-1),k(a.line,a.ch+1));return 2==
function B (line 5) | function B(b,a,c){var e=b.getLine(a.line),d=b.getTokenAt(a);if(/\bstring...
FILE: app/src/main/assets/code_mirror/addon/edit/closetag.js
function r (line 1) | function r(b){if(b.getOption("disableInput"))return e.Pass;for(var h=b.l...
function n (line 3) | function n(b,h){for(var a=b.listSelections(),d=[],f=h?"/":"</",c=0;c<a.l...
function p (line 5) | function p(b,e){if(b.indexOf)return b.indexOf(e);for(var a=0,d=b.length;...
function q (line 5) | function q(b,h,a,d,f){if(!e.scanForClosingTag)return!1;var c=Math.min(b....
FILE: app/src/main/assets/code_mirror/addon/edit/matchbrackets.js
function r (line 1) | function r(a,c,b,e){var d=a.getLineHandle(c.line),l=c.ch-1,d=0<=l&&q[d.t...
function t (line 2) | function t(a,c,b,e,d){var l=d&&d.maxScanLineLength||1E4,h=d&&d.maxScanLi...
function u (line 3) | function u(a,c,b){for(var e=a.state.matchBrackets.maxHighlightLineLength...
function v (line 4) | function v(a){a.operation(function(){f&&(f(),f=null);f=u(a,!1,a.state.ma...
FILE: app/src/main/assets/code_mirror/addon/edit/matchtags.js
function f (line 1) | function f(a){a.state.tagHit&&a.state.tagHit.clear();a.state.tagOther&&a...
function e (line 1) | function e(a){a.state.failedTagMatch=!1;a.operation(function(){f(a);if(!...
function g (line 2) | function g(a){a.state.failedTagMatch&&e(a)}
FILE: app/src/main/assets/code_mirror/addon/fold/brace-fold.js
function b (line 1) | function b(h){for(var c=a.ch,b=0;;)if(c=0>=c?-1:f.lastIndexOf(h,c-1),-1=...
function b (line 2) | function b(h){if(h<e.firstLine()||h>e.lastLine())return null;
function b (line 4) | function b(a){if(a<e.firstLine()||a>e.lastLine())return null;var b=e.get...
FILE: app/src/main/assets/code_mirror/addon/fold/foldcode.js
function k (line 1) | function k(a,c,d,g){function f(d){var b=k(a,c);if(!b||b.to.line-b.from.l...
function p (line 2) | function p(a,c){a=h(a,c,"widget");"string"==typeof a&&(c=document.create...
function h (line 3) | function h(a,c,b){return c&&void 0!==c[b]?c[b]:(a=a.options.foldOptions)...
FILE: app/src/main/assets/code_mirror/addon/fold/foldgutter.js
function f (line 4) | function f(b){this.options=b;this.from=this.to=0}
function d (line 4) | function d(b,c){b=b.findMarks(m(c,0),m(c+1,0));for(var a=0;a<b.length;++...
function g (line 4) | function g(b){if("string"==typeof b){var c=document.createElement("div")...
function e (line 5) | function e(b,c,a){var l=b.state.foldGutter.options,e=c,f=b.foldOption(l,...
function k (line 5) | function k(b){var c=b.getViewport(),a=b.state.foldGutter;a&&(b.operation...
function q (line 5) | function q(b,c,a){var h=b.state.foldGutter;
function n (line 6) | function n(b){var c=b.state.foldGutter;if(c){var a=c.options;c.from=c.to...
function r (line 6) | function r(b){var a=b.state.foldGutter;if(a){var d=a.options;clearTimeou...
function p (line 7) | function p(a,c){var b=a.state.foldGutter;b&&(c=c.line,c>=b.from&&c<b.to&...
FILE: app/src/main/assets/code_mirror/addon/fold/markdown-fold.js
function g (line 1) | function g(b){return(b=c.getTokenTypeAt(a.Pos(b,0)))&&/\bheader\b/.test(b)}
function h (line 1) | function h(b,a,c){return(a=a&&a.match(/^#+/))&&g(b)?a[0].length:(a=c&&c....
FILE: app/src/main/assets/code_mirror/addon/fold/xml-fold.js
function l (line 1) | function l(a,b,d,c){this.line=b;this.ch=d;this.cm=a;this.text=a.getLine(...
function m (line 1) | function m(a,b){return(a=a.cm.getTokenTypeAt(h(a.line,b)))&&/\btag\b/.te...
function t (line 1) | function t(a){if(!(a.line>=
function u (line 2) | function u(a){if(!(a.line<=a.min))return a.text=a.cm.getLine(--a.line),a...
function q (line 2) | function q(a){for(;;){var b=a.text.indexOf(">",a.ch);if(-1==b)if(t(a))co...
function r (line 2) | function r(a){for(;;){var b=a.ch?a.text.lastIndexOf("<",a.ch-1):-1;if(-1...
function v (line 3) | function v(a){for(;;){n.lastIndex=a.ch;var b=n.exec(a.text);if(!b)if(t(a...
function p (line 3) | function p(a,b){for(var d=[];;){var c=v(a),g,f=a.line,k=a.ch-(c?c[0].len...
function w (line 4) | function w(a,b){for(var d=[];;){var c;a:for(c=a;;){var g=c.ch?c.text.las...
FILE: app/src/main/assets/code_mirror/addon/hint/css-hint.js
function f (line 1) | function f(b){for(var a in b)h&&0!=a.lastIndexOf(h,0)||k.push(a)}
FILE: app/src/main/assets/code_mirror/addon/hint/html-hint.js
function n (line 1) | function n(a){for(var b in g)g.hasOwnProperty(b)&&(a.attrs[b]=g[b])}
FILE: app/src/main/assets/code_mirror/addon/hint/javascript-hint.js
function m (line 1) | function m(a,b){for(var k=0,e=a.length;k<e;++k)b(a[k])}
function q (line 1) | function q(a,b,k,e){var c=a.getCursor(),d=k(a,c);if(!/\b(?:string|commen...
function t (line 2) | function t(a,b){a=a.getTokenAt(b);b.ch==a.start+1&&"."==a.string.charAt(...
function r (line 2) | function r(a,
FILE: app/src/main/assets/code_mirror/addon/hint/show-hint.js
function n (line 1) | function n(a,b){this.cm=a;this.options=b;this.widget=null;this.tick=this...
function y (line 2) | function y(a,b){function c(a,d){var c;c="string"!=typeof d?function(a){r...
function w (line 3) | function w(a,b){for(;b&&b!=a;){if("LI"===b.nodeName.toUpperCase()&&b.par...
function q (line 3) | function q(a,b){this.completion=a;this.data=b;this.picked=!1;var c=this,...
function z (line 8) | function z(a,b){if(!a.somethingSelected())return b;a=[];for(var c=0;c<b....
function t (line 8) | function t(a,b,c,e){a.async?a(b,e,c):(a=a(b,c))&&a.then?a.then(e):e(a)}
function d (line 16) | function d(c){if(c==f.length)return b(null);t(f[c],a,e,function(a){a&&0<...
FILE: app/src/main/assets/code_mirror/addon/hint/sql-hint.js
function r (line 1) | function r(a){return"[object Array]"==Object.prototype.toString.call(a)}
function D (line 1) | function D(a){a=a.doc.modeOption;"sql"===a&&(a="text/x-sql");return g.re...
function q (line 1) | function q(a){return"string"==typeof a?a:a.text}
function v (line 1) | function v(a,b){r(b)&&(b=
function E (line 2) | function E(a){var b={};if(r(a))for(var c=a.length-1;0<=c;c--){var d=a[c]...
function w (line 2) | function w(a){var b={},c;for(c in a)a.hasOwnProperty(c)&&(b[c]=a[c]);ret...
function x (line 2) | function x(a,b){var c=a.length;b=q(b).substr(0,c);return a.toUpperCase()...
function p (line 2) | function p(a,b,c,d){if(r(c))for(var e=0;e<c.length;e++)x(b,c[e])&&a.push...
function F (line 3) | function F(a){"."==a.charAt(0)&&(a=a.substr(1));return a.replace(/`/g,"")}
function t (line 3) | function t(a){for(var b=q(a).split("."),c=0;c<b.length;c++)b[c]="`"+b[c]...
function G (line 3) | function G(a,b,c,d){for(var e=!1,f=[],y=b.start,k=!0;k;)k="."==b.string....
function H (line 4) | function H(a,b){if(a){var c=/[,;]/g;a=a.split(" ");for(var d=0;d<a.lengt...
function A (line 5) | function A(a,b){var c=b.doc,d=c.getValue(),e=a.toUpperCase(),f="",g="";a...
FILE: app/src/main/assets/code_mirror/addon/lint/javascript-lint.js
function p (line 1) | function p(b){m(b,q,"warning",!0);m(b,r,"error");var c;a:{c=b.descriptio...
function m (line 1) | function m(b,c,g,a){var h,d,f;h=b.description;for(var e=0;e<c.length;e++...
function t (line 2) | function t(b,c){for(var g=0;g<b.length;g++){var a=b[g];if(a){var h;h=[];...
FILE: app/src/main/assets/code_mirror/addon/lint/lint.js
function w (line 1) | function w(a,c){function b(a){if(!d.parentNode)return e.off(document,"mo...
function x (line 2) | function x(a){a.parentNode&&(null==a.style.opacity&&a.parentNode&&a.pare...
function q (line 2) | function q(a,c,b){function d(){e.off(b,"mouseout",d);g&&(x(g),g=null)}va...
function y (line 3) | function y(a,c,b){this.marked=[];this.options=c;this.timeout=null;this.h...
function t (line 4) | function t(a){var c=a.state.lint;c.hasGutter&&a.clearGutter("CodeMirror-...
function z (line 4) | function z(a,c,b,d){var g=document.createElement("div"),f=g;g.className=...
function r (line 4) | function r(a){var c=a.severity;c||(c="error");var b=document.createEleme...
function A (line 5) | function A(a,c,b){function d(){f=-1;a.off("change",d)}var g=a.state.lint...
function m (line 5) | function m(a){var c=a.state.lint.options,b=c.options||c,d=c.getAnnotatio...
function u (line 5) | function u(a,c){t(a);for(var b=
function v (line 7) | function v(a){var c=a.state.lint;c&&(clearTimeout(c.timeout),c.timeout=s...
FILE: app/src/main/assets/code_mirror/addon/merge/merge.js
function A (line 1) | function A(a,b){this.mv=a;this.type=b;this.classes="left"==b?{chunk:"Cod...
function z (line 2) | function z(a){a.diffOutOfDate&&(a.diff=L(a.orig.getValue(),a.edit.getVal...
function aa (line 2) | function aa(a){function b(b){B=!0;h=!1;"full"==b&&(a.svg&&C(a.svg),a.cop...
function ba (line 4) | function ba(a){a.edit.on("scroll",function(){I(a,DIFF_INSERT)&&x(a)});a....
function I (line 4) | function I(a,b){var c,f;if(a.diffOutOfDate)return!1;if(!a.lockScroll)ret...
function P (line 6) | function P(a,b){var c=b.after;null==c&&(c=a.lastLine()+1);return{top:a.h...
function Q (line 7) | function Q(a,b,c){(a.lockScroll=b)&&0!=c&&I(a,DIFF_INSERT)&&x(a);a.lockB...
function G (line 7) | function G(a,b,c){for(var f=0;f<b.length;++f){var d=b[f];d instanceof n....
function N (line 7) | function N(a,b,c,f,d){var e=a.getViewport();a.operation(function(){c.fro...
function J (line 8) | function J(a,b,c,f,d,e,k){function g(b,c){for(var g=Math.max(d,b),h=Math...
function x (line 9) | function x(a){if(a.showDifferences){if(a.svg){C(a.svg);var b=a.gap.offse...
function E (line 13) | function E(a,b){for(var c=0,f=0,d=0;d<b.length;d++){var e=b[d];if(e.edit...
function ca (line 13) | function ca(a,b){for(var c=[],f=0;f<a.chunks.length;f++){var d=a.chunks[...
function H (line 14) | function H(a,b){if(a.dealigned||b){if(!a.orig.curOp)return a.orig.operat...
function da (line 14) | function da(a,b,c){for(var f=0,d=[],e=0;e<a.length;e++)if(null!=
function ea (line 15) | function ea(a,b,c){var f=!0;b>a.lastLine()&&(b--,f=!1);var d=document.cr...
function U (line 15) | function U(a,b,c,f){if(!a.diffOutOfDate){a=f.editTo>b.lastLine()?q(f.edi...
function V (line 16) | function V(a){var b=a.lockButton=w("div",null,"CodeMirror-merge-scrolllo...
function W (line 17) | function W(a){return"string"==typeof a?a:a.getValue()}
function L (line 17) | function L(a,b){a=X.diff_main(a,b);X.diff_cleanupSemantic(a);for(b=0;b<a...
function M (line 18) | function M(a){for(var b=[],c=0,f=0,d=q(0,0),e=q(0,0),k=0;k<a.length;++k)...
function S (line 18) | function S(a,b){if(b==a.length-1)return!0;var c=a[b+1][1];
function R (line 19) | function R(a,b){if(0==b)return!0;var c=a[b-1][1];if(10!=c.charCodeAt(c.l...
function fa (line 19) | function fa(a,b,c){function f(){e.clear();a.removeLineClass(b,"wrap","Co...
function ga (line 20) | function ga(a,b){function c(){for(var a=0;a<f.length;a++)f[a].clear()}fo...
function Y (line 20) | function Y(a,b,c,f){for(var d=0;d<a.chunks.length;d++)for(var e=a.chunks...
function w (line 21) | function w(a,b,c,f){a=document.createElement(a);c&&(a.className=c);f&&(a...
function C (line 21) | function C(a){for(var b=a.childNodes.length;0<b;--b)a.removeChild(a.firs...
function T (line 21) | function T(a){for(var b=1;b<arguments.length;b+=2)a.setAttribute(argumen...
function K (line 21) | function K(a,b){b||(b={});for(var c in a)a.hasOwnProperty(c)&&(b[c]=a[c]...
function D (line 22) | function D(a,b,c,f){a=c?q(a.line,a.ch):a;for(c=0;;){var d=b.indexOf("\n"...
function Z (line 22) | function Z(a,b){var c=null,f=a.state.diffViews,d=a.getCursor().line;if(f...
FILE: app/src/main/assets/code_mirror/addon/mode/loadmode.js
function l (line 1) | function l(a,b){var c=b;return function(){0==--c&&a()}}
function h (line 1) | function h(a,c){var e=b.modes[a].dependencies;if(!e)return c();a=[];for(...
FILE: app/src/main/assets/code_mirror/addon/mode/multiplex.js
function m (line 1) | function m(a,c,b,d){return"string"==typeof c?(b=a.indexOf(c,b),d&&-1<b?b...
FILE: app/src/main/assets/code_mirror/addon/mode/simple.js
function r (line 1) | function r(e,c){if(!e.hasOwnProperty(c))throw Error("Undefined state "+c...
function q (line 1) | function q(e,c){if(!e)return/(?:)/;var d="";e instanceof RegExp?(e.ignor...
function u (line 1) | function u(e,c){(e.next||e.push)&&r(c,
function v (line 2) | function v(e,c){return function(d,a){if(a.pending){var b=a.pending.shift...
function t (line 5) | function t(e,c){if(e===c)return!0;if(!e||"object"!=typeof e||!c||"object...
function w (line 5) | function w(e,c){return function(d,a,b){if(d.local&&d.local.mode.indent)r...
FILE: app/src/main/assets/code_mirror/addon/runmode/colorize.js
function f (line 1) | function f(b,a){if(3==b.nodeType)return a.push(b.nodeValue);for(var c=b....
FILE: app/src/main/assets/code_mirror/addon/runmode/runmode-standalone.js
function k (line 2) | function k(a){this.pos=this.start=0;this.string=a;this.lineStart=0}
FILE: app/src/main/assets/code_mirror/addon/runmode/runmode.node.js
function splitLines (line 1) | function splitLines(a){return a.split(/\r\n?|\n/)}
function StringStream (line 1) | function StringStream(a,b){this.pos=this.start=0;this.string=a;this.tabS...
function copyObj (line 6) | function copyObj(a,b,d){b||(b={});for(var c in a)!a.hasOwnProperty(c)||!...
FILE: app/src/main/assets/code_mirror/addon/scroll/annotatescrollbar.js
function e (line 1) | function e(a,f){function c(a){clearTimeout(d.doRedraw);d.doRedraw=setTim...
function f (line 3) | function f(a,b){m!=a.line&&(m=a.line,l=c.getLineHandle(m));return e&&l.h...
FILE: app/src/main/assets/code_mirror/addon/scroll/scrollpastend.js
function e (line 1) | function e(a,b){c.changeEnd(b).line==a.lastLine()&&d(a)}
function d (line 1) | function d(a){var b="";if(1<a.lineCount())var b=a.display.scroller.clien...
FILE: app/src/main/assets/code_mirror/addon/scroll/simplescrollbars.js
function g (line 1) | function g(a,b,h){function e(a){var b=c.wheelEventPixels(a)["horizontal"...
function f (line 3) | function f(a,b,c){this.addClass=a;this.horiz=new g(a,"horizontal",c);b(t...
FILE: app/src/main/assets/code_mirror/addon/search/jump-to-line.js
function g (line 1) | function g(a,d,b,c,e){a.openDialog?a.openDialog(d,e,{value:c,selectValue...
function f (line 1) | function f(a,d){var b=Number(d);return/^[-+]/.test(d)?a.getCursor().line...
FILE: app/src/main/assets/code_mirror/addon/search/match-highlighter.js
function q (line 1) | function q(a){this.options={};for(var b in g)this.options[b]=(a&&a.hasOw...
function h (line 1) | function h(a){var b=a.state.matchHighlighter;(b.active||a.hasFocus())&&k(a,
function l (line 2) | function l(a){var b=a.state.matchHighlighter;b.active||(b.active=!0,k(a,...
function k (line 2) | function k(a,b){clearTimeout(b.timeout);b.timeout=setTimeout(function(){...
function n (line 2) | function n(a,b,d,c){var e=a.state.matchHighlighter;a.addOverlay(e.overla...
function p (line 2) | function p(a){var b=a.state.matchHighlighter;b.overlay&&
function m (line 3) | function m(a){a.operation(function(){var b=a.state.matchHighlighter;p(a)...
function r (line 4) | function r(a,b,d){return{token:function(c){var e;if(e=c.match(a))(e=
FILE: app/src/main/assets/code_mirror/addon/search/matchesonscrollbar.js
function g (line 1) | function g(a,c,b,e){this.cm=a;this.options=e;var f={listenForChanges:!1}...
function h (line 2) | function h(a,c,b){return a<=c?a:Math.max(c,a+b)}
FILE: app/src/main/assets/code_mirror/addon/search/search.js
function h (line 4) | function h(a,c){"string"==typeof a?a=new RegExp(a.replace(/[\-\[\]\/\{\}...
function e (line 5) | function e(){this.overlay=this.posFrom=this.posTo=this.lastQuery=this.qu...
function k (line 5) | function k(a){return a.state.search||(a.state.search=new e)}
function g (line 5) | function g(a){return"string"==typeof a&&a==a.toLowerCase()}
function l (line 5) | function l(a,c,b){return a.getSearchCursor(c,b,g(c))}
function y (line 5) | function y(a,c,b,f,d){a.openDialog(c,f,{value:b,selectValueOnOpen:!0,clo...
function r (line 5) | function r(a,
function z (line 6) | function z(a,c,b,f){if(a.openConfirm)a.openConfirm(c,f);else if(confirm(...
function u (line 6) | function u(a){return a.replace(/\\(.)/g,function(a,b){return"n"==b?"\n":...
function v (line 6) | function v(a){var b=a.match(/^\/(.*)\/([a-z]*)$/);if(b)try{a=new RegExp(...
function p (line 6) | function p(a,b,e){b.queryText=e;b.query=v(e);a.removeOverlay(b.overlay,
function m (line 7) | function m(a,c,e,f){var d=k(a);if(d.query)return q(a,c);var g=a.getSelec...
function q (line 9) | function q(a,c,e){a.operation(function(){var f=
function n (line 10) | function n(a){a.operation(function(){var b=k(a);if(b.lastQuery=b.query)b...
function w (line 10) | function w(a,b,e){a.operation(function(){for(var c=l(a,
function x (line 11) | function x(a,b){if(!a.getOption("readOnly")){var c=a.getSelection()||k(a...
FILE: app/src/main/assets/code_mirror/addon/search/searchcursor.js
function e (line 4) | function e(b,a,h,q){this.atOccurrence=!1;this.doc=b;null==q&&"string"==t...
function k (line 7) | function k(a,d,h){if(a.length==d.length)return h;for(d=Math.min(h,
function b (line 8) | function b(a){a=g(a,0);h.pos={from:a,to:a};return h.atOccurrence=!1}
FILE: app/src/main/assets/code_mirror/addon/selection/active-line.js
function f (line 1) | function f(a){for(var b=0;b<a.state.activeLines.length;b++)a.removeLineC...
function k (line 2) | function k(a,b){if(a.length!=b.length)return!1;for(var c=0;c<a.length;c+...
function g (line 2) | function g(a,b){for(var c=[],d=0;d<b.length;d++){var e=b[d];e.empty()&&(...
function h (line 3) | function h(a,b){g(a,b.ranges)}
FILE: app/src/main/assets/code_mirror/addon/selection/mark-selection.js
function d (line 4) | function d(b){b.operation(function(){r(b)})}
function c (line 4) | function c(b){b.state.markedSelection.length&&b.operation(function(){g(b...
function e (line 4) | function e(b,a,f,c){if(0!=l(a,f))for(var n=b.state.markedSelection,e=b.s...
function g (line 5) | function g(b){b=b.state.markedSelection;for(var a=0;a<b.length;++a)b[a]....
function h (line 5) | function h(a){g(a);for(var b=a.listSelections(),f=0;f<b.length;f++)e(a,b...
function r (line 5) | function r(a){if(!a.somethingSelected())return g(a);if(1<a.listSelection...
FILE: app/src/main/assets/code_mirror/addon/selection/selection-pointer.js
function e (line 1) | function e(b){b.state.selectionPointer.rects=null;f(b)}
function f (line 1) | function f(b){b.state.selectionPointer.willUpdate||(b.state.selectionPoi...
FILE: app/src/main/assets/code_mirror/addon/tern/tern.js
function B (line 1) | function B(a,c,b){var d=a.docs[c];d?b(x(a,d)):a.options.getFile?a.option...
function u (line 1) | function u(a,c,b){for(var d in a.docs){var e=a.docs[d];if(e.doc==c)retur...
function C (line 1) | function C(a,c){if("string"==typeof c)return a.docs[c];
function L (line 2) | function L(a,c,b){var d=u(a,c),e=a.cachedArgHints;e&&e.doc==c&&0<=y(e.st...
function E (line 2) | function E(a,
function M (line 3) | function M(a,c,b){a.request(c,{type:"completions",types:!0,docs:!0,urls:...
function N (line 4) | function N(a){a="?"==a?"unknown":"number"==a||"string"==a||"bool"==a?a:/...
function F (line 5) | function F(a,c,b,d,e){a.request(c,d,function(b,d){if(b)return t(a,c,b);i...
function O (line 5) | function O(a,c){z(a);if(!c.somethingSelected()){var b=c.getTokenAt(c.get...
function H (line 7) | function H(a,c,b){z(a);for(var d=a.cachedArgHints,e=d.type,d=p("span",d....
function P (line 8) | function P(a){function c(c){for(var b=0,e=d;;){var f=a.charAt(d);if(c.te...
function Q (line 9) | function Q(a,c){function b(b){b={type:"definition",variable:b||null};var...
function J (line 11) | function J(a,c,b,d,e){b.doc.setSelection(d,e);c!=b&&a.options.switchToDo...
function R (line 11) | function R(a){var c=a.getCursor("end"),b=a.getTokenAt(c);return b.start<...
function S (line 12) | function S(a,c){var b=c.getTokenAt(c.getCursor());if(!/\w/.test(b.string...
function U (line 12) | function U(a,c){var b=u(a,c.doc).name;a.request(c,{type:"refs"},function...
function T (line 13) | function T(a,c){for(var b=Object.create(null),d=0;d<c.length;++d){var e=...
function I (line 13) | function I(a,c,b,d){var e=[],f;(f=!b.fullDocs)||delete b.fullDocs;"strin...
function W (line 15) | function W(a,c,b){for(var d=a.doc,e=null,f=null,g=c.line-1,k=Math.max(0,...
function p (line 16) | function p(a,c){var b=document.createElement(a);c&&(b.className=c);for(v...
function K (line 16) | function K(a,c,b){a.openDialog?a.openDialog(c+": <input type=text>",b):b...
function G (line 16) | function G(a,c,b){function d(){a.state.ternTooltip=null;f.parentNode&&(a...
function A (line 17) | function A(a,c,b){b=p("div",k+"tooltip",b);b.style.left=a+"px";b.style.t...
function w (line 17) | function w(a){var c=a&&a.parentNode;c&&
function X (line 18) | function X(a){a.style.opacity="0";setTimeout(function(){w(a)},1100)}
function t (line 18) | function t(a,c,b){a.options.showError?a.options.showError(c,b):G(c,Strin...
function z (line 18) | function z(a){a.activeArgHints&&(w(a.activeArgHints),a.activeArgHints=nu...
function x (line 18) | function x(a,c){var b=c.doc.getValue();a.options.fileFilter&&(b=a.option...
function Y (line 18) | function Y(a){function c(a,c){c&&(a.id=++d,e[d]=c);b.postMessage(a)}var ...
FILE: app/src/main/assets/code_mirror/addon/tern/worker.js
function getFile (line 2) | function getFile(b,a){postMessage({type:"getFile",name:b,id:++nextId});p...
function startServer (line 2) | function startServer(b,a,c){c&&importScripts.apply(null,c);server=new te...
FILE: app/src/main/assets/code_mirror/addon/wrap/hardwrap.js
function p (line 1) | function p(c,a,b){for(var e=b.paragraphStart||c.getHelper(a,"paragraphSt...
function v (line 2) | function v(c,a,b,e){for(var d=a;d<c.length&&" "==c.charAt(d);)d++;for(;0...
function n (line 2) | function n(c,a,b,e){a=c.clipPos(a);b=c.clipPos(b);var d=e.column||80,f=e...
FILE: app/src/main/assets/code_mirror/lib/codemirror.js
function l (line 4) | function l(a,b){if(!(this instanceof l))return new l(a,b);this.options=b...
function aa (line 6) | function aa(a,b,c){this.input=c;this.scrollbarFiller=r("div",null,"CodeM...
function I (line 10) | function I(a){a.doc.mode=l.getMode(a.options,a.doc.modeOption);S(a)}
function S (line 10) | function S(a){a.doc.iter(function(a){a.stateAfter&&(a.stateAfter=null);a...
function ba (line 11) | function ba(a){var b=Ca(a.display),c=a.options.lineWrapping,d=c&&Math.ma...
function Qa (line 11) | function Qa(a){var b=a.doc,c=ba(a);b.iter(function(a){var b=c(a);b!=a.he...
function Fd (line 11) | function Fd(a){a.display.wrapper.className=a.display.wrapper.className.r...
function nb (line 12) | function nb(a){Ed(a);P(a);setTimeout(function(){Hc(a)},20)}
function Ed (line 12) | function Ed(a){var b=a.display.gutters,c=a.options.gutters;wa(b);for(var...
function Ic (line 12) | function Ic(a){a.display.sizer.style.marginLeft=a.display.gutters.offset...
function Pb (line 12) | function Pb(a){if(0==
function Jc (line 13) | function Jc(a){var b=a.display;a=a.doc;b.maxLine=w(a,a.first);b.maxLineL...
function Dc (line 13) | function Dc(a){var b=N(a.gutters,"CodeMirror-linenumbers");-1==b&&a.line...
function ob (line 14) | function ob(a){var b=a.display,c=b.gutters.offsetWidth,d=Math.round(a.do...
function Lc (line 15) | function Lc(a,b,c){this.cm=c;var d=this.vert=r("div",[r("div",null,null,...
function Mc (line 15) | function Mc(){}
function Gd (line 15) | function Gd(a){a.display.scrollbars&&
function Va (line 17) | function Va(a,b){b||(b=ob(a));var c=a.display.barWidth,d=a.display.barHe...
function Md (line 17) | function Md(a,b){var c=a.display,d=c.scrollbars.update(b);c.sizer.style....
function Nc (line 18) | function Nc(a,b,c){var d=c&&null!=c.top?Math.max(0,c.top):a.scroller.scr...
function Hc (line 19) | function Hc(a){var b=a.display,c=b.view;if(b.alignWidgets||b.gutters.fir...
function Kd (line 20) | function Kd(a){if(!a.options.lineNumbers)return!1;var b=a.doc,b=Pc(a.opt...
function Pc (line 21) | function Pc(a,b){return String(a.lineNumberFormatter(b+a.firstLineNumber))}
function Oc (line 21) | function Oc(a){return a.scroller.getBoundingClientRect().left-a.sizer.ge...
function Rb (line 21) | function Rb(a,b,c){var d=a.display;this.viewport=b;this.visible=Nc(d,a.d...
function Rc (line 22) | function Rc(a,b){var c=a.display,d=a.doc;if(b.editorIsHidden)return xa(a...
function Pd (line 25) | function Pd(a,b){for(var c=b.viewport,d=!0;;d=!1){if(!d||!a.options.line...
function Vc (line 26) | function Vc(a,b){b=new Rb(a,b);if(Rc(a,b)){Qb(a);Pd(a,b);var c=ob(a);sb(...
function Uc (line 26) | function Uc(a,b){a.display.sizer.style.minHeight=b.docHeight+"px";a.disp...
function Qb (line 27) | function Qb(a){a=a.display;for(var b=a.lineDiv.offsetTop,c=0;c<a.view.le...
function Qd (line 27) | function Qd(a){if(a.widgets)for(var b=0;b<a.widgets.length;++b)a.widgets...
function Qc (line 28) | function Qc(a){for(var b=a.display,c={},d={},e=b.gutters.clientLeft,f=b....
function Df (line 28) | function Df(a,b,c){function d(b){var c=b.nextSibling;M&&ea&&a.display.cu...
function Rd (line 29) | function Rd(a,b,c,d){for(var e=
function tb (line 31) | function tb(a){a.node==a.text&&(a.node=r("div",null,null,"position: rela...
function Sd (line 31) | function Sd(a,b){var c=a.display.externalMeasured;return c&&c.line==b.li...
function Wc (line 31) | function Wc(a){var b=a.bgClass?a.bgClass+" "+(a.line.bgClass||""):a.line...
function Td (line 32) | function Td(a,b,c,d){b.gutter&&(b.node.removeChild(b.gutter),b.gutter=nu...
function Ef (line 35) | function Ef(a,b,c,d){var e=Sd(a,b);b.text=b.node=e.pre;e.bgClass&&(b.bgC...
function Ud (line 35) | function Ud(a,b,c){Wd(a,b.line,b,c,!0);if(b.rest)for(var d=0;d<b.rest.le...
function Wd (line 35) | function Wd(a,b,c,d,e){if(b.widgets){var f=tb(c),g=0;for(b=b.widgets;g<b...
function Xc (line 36) | function Xc(a){return q(a.line,a.ch)}
function Tb (line 37) | function Tb(a,b){return 0>t(a,b)?b:a}
function Ub (line 37) | function Ub(a,b){return 0>t(a,b)?a:b}
function Xd (line 37) | function Xd(a){a.state.focused||(a.display.input.focus(),Fc(a))}
function Vb (line 37) | function Vb(a,b,c,d,e){var f=a.doc;a.display.shift=!1;d||(d=f.sel);var g...
function Zd (line 38) | function Zd(a,b){var c=
function Yd (line 39) | function Yd(a,b){if(a.options.electricChars&&a.options.smartIndent)for(v...
function $d (line 40) | function $d(a){for(var b=[],c=[],d=0;d<a.doc.sel.ranges.length;d++){var ...
function ae (line 40) | function ae(a,b){a.setAttribute("autocorrect","off");a.setAttribute("aut...
function Yc (line 41) | function Yc(a){this.cm=a;this.prevInput="";this.pollingFast=!1;this.poll...
function be (line 41) | function be(){var a=r("textarea",null,null,"position: absolute; bottom: ...
function Zc (line 41) | function Zc(a){this.cm=
function ce (line 42) | function ce(a,b){var c=$c(a,b.line);if(!c||c.hidden)return null;a=w(a.do...
function Ya (line 42) | function Ya(a,b){b&&(a.bad=!0);return a}
function Yb (line 42) | function Yb(a,b,c){var d;if(b==a.display.lineDiv){d=a.display.lineDiv.ch...
function Ff (line 43) | function Ff(a,b,c){function d(b,c,d){for(var e=-1;e<(m?m.length:0);e++)f...
function Gf (line 45) | function Gf(a,b,c,d,e){function f(a){return function(b){return b.id==a}}...
function ra (line 46) | function ra(a,b){this.ranges=a;this.primIndex=b}
function G (line 46) | function G(a,b){this.anchor=a;this.head=b}
function ga (line 46) | function ga(a,b){b=a[b];a.sort(function(a,b){return t(a.from(),b.from())...
function na (line 47) | function na(a,b){return new ra([new G(a,b||a)],0)}
function z (line 47) | function z(a,b){if(b.line<a.first)return q(a.first,0);var c=a.first+a.si...
function wb (line 47) | function wb(a,b){return b>=a.first&&b<a.first+a.size}
function fe (line 47) | function fe(a,b){for(var c=[],d=0;d<b.length;d++)c[d]=
function xb (line 48) | function xb(a,b,c,d){return a.cm&&a.cm.display.shift||a.extend?(a=b.anch...
function Zb (line 48) | function Zb(a,b,c,d){E(a,new ra([xb(a,a.sel.primary(),b,c)],0),d)}
function ge (line 48) | function ge(a,b,c){for(var d=[],e=0;e<a.sel.ranges.length;e++)d[e]=xb(a,...
function bd (line 48) | function bd(a,b,c,d){var e=a.sel.ranges.slice(0);e[b]=c;E(a,ga(e,a.sel.p...
function Hf (line 48) | function Hf(a,b,c){c={ranges:b.ranges,update:function(b){this.ranges=
function he (line 49) | function he(a,b,c){var d=a.history.done,e=C(d);e&&e.ranges?(d[d.length-1...
function E (line 49) | function E(a,b,c){$b(a,b,c);b=a.sel;var d=a.cm?a.cm.curOp.id:NaN,e=a.his...
function $b (line 50) | function $b(a,b,c){if(ca(a,"beforeSelectionChange")||a.cm&&ca(a.cm,"befo...
function je (line 51) | function je(a,b){b.equals(a.sel)||(a.sel=b,a.cm&&(a.cm.curOp.updateInput...
function me (line 51) | function me(a){je(a,ke(a,a.sel,null,!1),oa)}
function ke (line 51) | function ke(a,b,c,d){for(var e,f=0;f<b.ranges.length;f++){var g=b.ranges...
function Za (line 52) | function Za(a,b,c,d,e){var f=w(a,b.line);if(f.markedSpans)for(var g=0;g<...
function cd (line 53) | function cd(a,b,c,d,e){d=d||1;b=Za(a,b,c,d,e)||!e&&Za(a,b,c,d,!0)||Za(a,...
function ne (line 53) | function ne(a,b,c,d){return 0>c&&0==b.ch?b.line>a.first?z(a,q(b.line-1))...
function sb (line 54) | function sb(a){a.display.input.showSelection(a.display.input.prepareSele...
function oe (line 54) | function oe(a,b){for(var c=a.doc,d={},e=d.cursors=document.createDocumen...
function pe (line 55) | function pe(a,b,c){b=sa(a,b,"div",null,null,!a.options.singleCursorHeigh...
function If (line 55) | function If(a,b,c){function d(a,
function dd (line 58) | function dd(a){if(a.state.focused){var b=a.display;clearInterval(b.blink...
function kb (line 59) | function kb(a,b){a.doc.mode.startState&&a.doc.frontier<a.display.viewTo&...
function Kf (line 59) | function Kf(a){var b=a.doc;b.frontier<b.first&&(b.frontier=b.first);if(!...
function Lf (line 61) | function Lf(a,b,c){for(var d,e,f=a.doc,g=c?-1:b-(a.doc.mode.innerMode?1E...
function yb (line 61) | function yb(a,b,c){var d=a.doc,e=a.display;if(!d.mode.startState)return!...
function Kc (line 62) | function Kc(a){return a.mover.offsetHeight-a.lineSpace.offsetHeight}
function qe (line 62) | function qe(a){if(a.cachedPaddingH)return a.cachedPaddingH;var b=Y(a.mea...
function ka (line 62) | function ka(a){return Ld-a.display.nativeBarWidth}
function Ga (line 62) | function Ga(a){return a.display.scroller.clientWidth-
function Tc (line 63) | function Tc(a){return a.display.scroller.clientHeight-ka(a)-a.display.ba...
function de (line 63) | function de(a,b,c){if(a.line==b)return{map:a.measure.map,cache:a.measure...
function $c (line 63) | function $c(a,b){if(b>=a.display.viewFrom&&b<a.display.viewTo)return a.d...
function cc (line 64) | function cc(a,b){var c=F(b),d=$c(a,c);d&&!d.text?d=null:d&&d.changes&&(R...
function dc (line 64) | function dc(a,b,c,d,e){b.before&&(c=-1);var f=c+(d||"");if(b.cache.hasOw...
function ee (line 69) | function ee(a,b,c){for(var d,e,f,g,h=0;h<a.length;h+=3){var k=a[h],m=a[h...
function ue (line 70) | function ue(a){if(a.measure&&(a.measure.cache={},a.measure.heights=null,...
function ve (line 70) | function ve(a){a.display.externalMeasure=null;wa(a.display.lineMeasure);...
function mb (line 70) | function mb(a){ve(a);a.display.cachedCharWidth=a.display.cachedTextHeigh...
function gd (line 70) | function gd(a,b,c,d){if(b.widgets)for(var e=
function we (line 72) | function we(a,b,c){if("div"==c)return b;var d=b.left;b=b.top;"page"==c?(...
function bc (line 72) | function bc(a,b,c,d,e){d||(d=w(a.doc,b.line));var f=d;b=b.ch;d=dc(a,cc(a...
function sa (line 73) | function sa(a,b,c,d,e,f){function g(b,g){b=dc(a,e,b,g?"right":"left",f);...
function xe (line 73) | function xe(a,
function ec (line 74) | function ec(a,b,c,d){a=q(a,b);a.xRel=d;c&&(a.outside=!0);return a}
function jd (line 74) | function jd(a,b,c){var d=a.doc;c+=a.display.viewOffset;if(0>c)return ec(...
function Nf (line 75) | function Nf(a,b,c,d,e){function f(d){d=sa(a,q(c,d),"line",b,m);h=!0;if(g...
function Ca (line 76) | function Ca(a){if(null!=a.cachedTextHeight)return a.cachedTextHeight;if(...
function lb (line 77) | function lb(a){if(null!=a.cachedCharWidth)return a.cachedCharWidth;var b...
function Ra (line 77) | function Ra(a){a.curOp={cm:a,viewChanged:!1,startHeight:a.doc.height,for...
function Ta (line 78) | function Ta(a){if(a=a.curOp.ownsGroup)try{var b=a.delayedCallbacks,c=0;d...
function X (line 86) | function X(a,b){if(a.curOp)return b();Ra(a);try{return b()}finally{Ta(a)}}
function H (line 86) | function H(a,b){return function(){if(a.curOp)return b.apply(a,arguments)...
function O (line 87) | function O(a){return function(){if(this.curOp)return a.apply(this,argume...
function Q (line 87) | function Q(a){return function(){var b=this.cm;if(!b||b.curOp)return a.ap...
function se (line 87) | function se(a,b,c){for(var d=this.line=b,e;d=Ea(d,!1);)d=d.find(1,!0).li...
function Sb (line 88) | function Sb(a,b,c){var d=[],e;for(e=b;e<c;)b=new se(a.doc,w(a.doc,e),e),...
function P (line 88) | function P(a,b,c,d){null==b&&(b=a.doc.first);null==c&&(c=a.doc.first+a.d...
function ta (line 89) | function ta(a,b,c){a.curOp.viewChanged=!0;var d=a.display,
function xa (line 90) | function xa(a){a.display.viewFrom=a.display.viewTo=a.doc.first;a.display...
function Ha (line 90) | function Ha(a,b){if(b>=a.display.viewTo)return null;b-=a.display.viewFro...
function ic (line 90) | function ic(a,b,c,d){var e=Ha(a,
function Nd (line 91) | function Nd(a){a=a.display.view;for(var b=0,c=0;c<a.length;c++){var d=a[...
function Bf (line 91) | function Bf(a){function b(){d.activeTouch&&(e=setTimeout(function(){d.ac...
function Sf (line 97) | function Sf(a){var b=a.display;if(b.lastWrapHeight!=b.wrapper.clientHeig...
function ua (line 97) | function ua(a,b){for(b=b.target||b.srcElement;b!=a.wrapper;b=b.parentNod...
function Ka (line 97) | function Ka(a,
function Qf (line 98) | function Qf(a){var b=this.display;if(!(D(this,a)||b.activeTouch&&b.input...
function Tf (line 99) | function Tf(a,b,c){B?setTimeout(Ec(Xd,a),
function Wf (line 100) | function Wf(a,b,c,d){var e=a.display,f=+new Date,g=H(a,function(h){M&&(e...
function Xf (line 101) | function Xf(a,b,c,d,e){function f(b){if(0!=t(r,b))if(r=b,"rect"==d){for(...
function ld (line 105) | function ld(a,
function Rf (line 106) | function Rf(a){var b=this;Ce(b);if(!D(b,a)&&!ua(b.display,a)){R(a);B&&(A...
function Ce (line 108) | function Ce(a){a.display.dragCursor&&(a.display.lineSpace.removeChild(a....
function qb (line 109) | function qb(a,b){2>Math.abs(a.doc.scrollTop-b)||(a.doc.scrollTop=b,va||V...
function Ua (line 109) | function Ua(a,b,c){(c?b==a.doc.scrollLeft:2>Math.abs(a.doc.scrollLeft-b)...
function ze (line 110) | function ze(a,b){var c=Ie(b),d=c.x,c=c.y,e=a.display,f=e.scroller,g=f.sc...
function nc (line 112) | function nc(a,b,c){if("string"==typeof b&&(b=oc[b],!b))return!1;a.displa...
function Zf (line 112) | function Zf(a,b,c){for(var d=0;d<a.state.keyMaps.length;d++){var e=Cb(b,...
function pc (line 112) | function pc(a,b,c,d){var e=a.state.keySeq;
function Ke (line 113) | function Ke(a,b){var c=bg(b,!0);return c?b.shiftKey&&!a.state.keySeq?pc(...
function cg (line 114) | function cg(a,b,c){return pc(a,"'"+c+"'",b,function(b){return nc(a,b,!0)})}
function Ee (line 114) | function Ee(a){this.curOp.focus=ma();if(!D(this,a)){B&&11>A&&27==a.keyCo...
function dg (line 114) | function dg(a){function b(a){18!=a.keyCode&&a.altKey||
function De (line 115) | function De(a){16==a.keyCode&&(this.doc.sel.shift=!1);D(this,a)}
function Fe (line 115) | function Fe(a){if(!(ua(this.display,a)||D(this,a)||a.ctrlKey&&!a.altKey|...
function Uf (line 116) | function Uf(a){a.state.delayingBlurEvent=!0;setTimeout(function(){a.stat...
function Fc (line 116) | function Fc(a,b){a.state.delayingBlurEvent&&(a.state.delayingBlurEvent=!...
function jb (line 117) | function jb(a,b){a.state.delayingBlurEvent||(a.state.focused&&(L(a,"blur...
function ye (line 117) | function ye(a,b){var c;(c=ua(a.display,b))||(c=ca(a,"gutterContextMenu")...
function Me (line 117) | function Me(a,b){if(0>t(a,b.from))return a;if(0>=t(a,b.to))return La(b);...
function qd (line 118) | function qd(a,b){for(var c=[],d=0;d<a.sel.ranges.length;d++){var e=a.sel...
function Ne (line 118) | function Ne(a,b,c){return a.line==b.line?q(c.line,a.ch-b.ch+c.ch):q(c.li...
function Oe (line 118) | function Oe(a,b,c){b={canceled:!1,from:b.from,to:b.to,text:b.text,origin...
function Wa (line 119) | function Wa(a,b,c){if(a.cm){if(!a.cm.curOp)return H(a.cm,Wa)(a,b,c);if(a...
function Qe (line 120) | function Qe(a,b){if(1!=b.text.length||""!=b.text[0]||0!=t(b.from,b.to)){...
function qc (line 120) | function qc(a,b,c){if(!a.cm||!a.cm.state.suppressEdits||c){for(var d=a.h...
function Ue (line 122) | function Ue(a,b){if(0!=b&&(a.first+=b,a.sel=new ra(Wb(a.sel.ranges,funct...
function Db (line 122) | function Db(a,b,c,d){if(a.cm&&!a.cm.curOp)return H(a.cm,Db)(a,b,c,d);if(...
function fg (line 123) | function fg(a,b,c){var d=a.doc,e=a.display,f=b.from,g=b.to,h=!1,k=f.line...
function bb (line 125) | function bb(a,b,c,d,e){d||(d=c);if(0>t(d,c)){var f=d;d=c;c=f}"string"==t...
function hc (line 125) | function hc(a,b,c,d,e){var f=a.display,g=Ca(a.display);0>c&&(c=0);var h=...
function rc (line 126) | function rc(a,b,c){null==b&&null==c||sc(a);null!=b&&(a.curOp.scrollLeft=...
function Xa (line 127) | function Xa(a){sc(a);var b=a.getCursor(),c=b,d=b;a.options.lineWrapping|...
function sc (line 127) | function sc(a){var b=a.curOp.scrollToPos;if(b){a.curOp.scrollToPos=null;...
function ub (line 128) | function ub(a,b,c,d){var e=a.doc,f;null==c&&(c="add");"smart"==c&&(e.mod...
function tc (line 129) | function tc(a,b,c,d){var e=b,f=b;"number"==typeof b?f=w(a,Math.max(a.fir...
function cb (line 130) | function cb(a,b){for(var c=a.doc.sel.ranges,d=[],e=0;e<c.length;e++){for...
function vd (line 130) | function vd(a,b,c,d,e){function f(b){var d=(e?kd:We)(m,h,c,!0);if(null==...
function Xe (line 131) | function Xe(a,
function x (line 132) | function x(a,b,c,d){l.defaults[a]=b;c&&(Sa[a]=d?function(a,b,d){d!=Jd&&c...
function gg (line 132) | function gg(a){var b=a.split(/-(?!$)/);a=b[b.length-1];for(var c,d,e,f,g...
function vc (line 133) | function vc(a){return"string"==typeof a?Aa[a]:a}
function db (line 133) | function db(a,b,c,d,e){if(d&&d.shared)return hg(a,b,c,d,e);if(a.cm&&!a.c...
function hg (line 136) | function hg(a,b,c,d,e){d=da(d);d.shared=!1;var f=[db(a,b,c,d,e)],g=f[0],...
function Ze (line 137) | function Ze(a){return a.findMarks(q(a.first,0),a.clipPos(q(a.lastLine())...
function ig (line 137) | function ig(a){for(var b=0;b<a.length;b++){var c=a[b],d=[c.primary.doc];...
function wc (line 137) | function wc(a,b,c){this.marker=a;this.from=b;this.to=c}
function Eb (line 137) | function Eb(a,b){if(a)for(var c=0;c<a.length;++c){var d=a[c];if(d.marker...
function rd (line 137) | function rd(a,b){if(b.full)return null;
function $e (line 140) | function $e(a){for(var b=0;b<a.length;++b){var c=a[b];null!=c.from&&c.fr...
function Te (line 140) | function Te(a,b){var c;if(c=b["spans_"+a.id]){for(var d=0,e=[];d<b.text....
function eg (line 141) | function eg(a,b,c){var d=null;a.iter(b.line,c.line+1,function(a){if(a.ma...
function af (line 142) | function af(a){var b=a.markedSpans;if(b){for(var c=0;c<b.length;++c)b[c]...
function bf (line 142) | function bf(a,b){if(b){for(var c=0;c<b.length;++c)b[c].marker.attachLine...
function cf (line 142) | function cf(a,
function Ea (line 143) | function Ea(a,b){a=ya&&a.markedSpans;var c;if(a)for(var d,e=0;e<a.length...
function Ye (line 143) | function Ye(a,b,c,d,e){a=w(a,b);if(a=ya&&a.markedSpans)for(b=0;b<a.lengt...
function pa (line 144) | function pa(a){for(var b;b=Ea(a,!0);)a=b.find(-1,!0).line;return a}
function Sc (line 144) | function Sc(a,b){a=w(a,b);var c=pa(a);return a==c?b:F(c)}
function Od (line 144) | function Od(a,b){if(b>a.lastLine())return b;
function Da (line 145) | function Da(a,b){var c=ya&&b.markedSpans;if(c)for(var d,e=0;e<c.length;+...
function xd (line 145) | function xd(a,b,c){if(null==c.to)return b=c.marker.find(1,!0),xd(a,b.lin...
function Ab (line 146) | function Ab(a){if(null!=a.height)return a.height;var b=a.doc.cm;if(!b)re...
function kg (line 147) | function kg(a,b,c,d){var e=new yc(a,c,d),f=a.cm;f&&e.noHScroll&&(f.displ...
function df (line 147) | function df(a,b){if(a)for(;;){var c=a.match(/(?:^|\s+)line-(background-)...
function ef (line 148) | function ef(a,b){if(a.blankLine)return a.blankLine(b);if(a.innerMode&&(a...
function yd (line 148) | function yd(a,b,c,d){for(var e=0;10>e;e++){d&&(d[0]=l.innerMode(a,c).mod...
function ff (line 148) | function ff(a,b,c,d){function e(a){return{start:p.start,
function gf (line 149) | function gf(a,b,c,d,e,f,g){var h=c.flattenSpans;null==h&&(h=a.options.fl...
function re (line 150) | function re(a,b,c,d){var e=[a.state.modeGen],f={};gf(a,b.text,a.doc.mode...
function hf (line 151) | function hf(a,b,c){if(!b.styles||b.styles[0]!=a.state.modeGen){var d=yb(...
function ed (line 152) | function ed(a,b,c,d){var e=a.doc.mode;a=new zc(b,a.options.tabSize);a.st...
function jf (line 152) | function jf(a,b){if(!a||/^\s*$/.test(a))return null;b=b.addModeClass?lg:...
function Vd (line 152) | function Vd(a,b){var c=r("span",null,null,M?"padding-right: .1px":null),...
function ng (line 157) | function ng(a,b,c,d,e,f,g){if(b){var h;if(a.splitSpaces)if(h=a.trailingS...
function og (line 160) | function og(a,b){return function(c,d,e,f,g,h,k){e=e?e+" cm-force-border"...
function kf (line 160) | function kf(a,b,c,d){var e=!d&&c.widgetNode;e&&a.map.push(a.pos,a.pos+b,...
function Ve (line 161) | function Ve(a,b){return 0==b.from.ch&&0==b.to.ch&&""==C(b.text)&&(!a.cm|...
function td (line 161) | function td(a,b,c,d){function e(a,c,e){a.text=c;a.stateAfter&&(a.stateAf...
function Gb (line 163) | function Gb(a){this.lines=a;this.parent=null;for(var b=0,c=0;b<a.length;...
function Hb (line 163) | function Hb(a){this.children=a;for(var b=0,c=0,d=0;d<a.length;++d){var e...
function Ma (line 164) | function Ma(a,b,c){function d(a,f,g){if(a.linked)for(var e=0;e<a.linked....
function Id (line 164) | function Id(a,b){if(b.cm)throw Error("This document is already in use.")...
function w (line 164) | function w(a,b){b-=a.first;if(0>b||b>=a.size)throw Error("There is no li...
function Ia (line 165) | function Ia(a,b,c){var d=[],e=b.line;a.iter(b.line,c.line+1,function(a){...
function Bd (line 165) | function Bd(a,b,c){var d=[];a.iter(b,c,function(a){d.push(a.text)});retu...
function ja (line 165) | function ja(a,b){if(b-=a.height)for(;a;a=a.parent)a.height+=b}
function F (line 165) | function F(a){if(null==a.parent)return null;var b=a.parent;a=N(b.lines,a...
function Fa (line 166) | function Fa(a,b){var c=a.first;a:do{for(var d=0;d<a.children.length;++d)...
function la (line 166) | function la(a){a=pa(a);for(var b=0,c=a.parent,d=0;d<c.lines.length;++d){...
function fa (line 167) | function fa(a){var b=a.order;null==b&&(b=a.order=qg(a.text));return b}
function Ac (line 167) | function Ac(a){this.done=[];this.undone=[];this.undoDepth=Infinity;this....
function sd (line 167) | function sd(a,b){var c={from:Xc(b.from),to:La(b),text:Ia(a,b.from,b.to)}...
function ie (line 167) | function ie(a){for(;a.length;)if(C(a).ranges)a.pop();
function Re (line 168) | function Re(a,b,c,d){var e=a.history;e.undone.length=0;var f=+new Date,g...
function ac (line 169) | function ac(a,b){var c=C(b);c&&c.ranges&&c.equals(a)||b.push(a)}
function lf (line 169) | function lf(a,b,c,d){var e=b["spans_"+a.id],f=0;a.iter(Math.max(a.first,...
function jg (line 170) | function jg(a){if(!a)return null;for(var b=0,c;b<a.length;++b)a[b].marke...
function eb (line 170) | function eb(a,b,c){for(var d=0,e=[];d<a.length;++d){var f=a[d];if(f.rang...
function mf (line 171) | function mf(a,b,c,d){c<a.line?a.line+=d:b<a.line&&(a.line=b,a.ch=0)}
function nf (line 171) | function nf(a,b,c,d){for(var e=0;e<a.length;++e){var f=a[e],g=!0;if(f.ra...
function Se (line 172) | function Se(a,b){var c=b.from.line,d=b.to.line;b=b.text.length-(d-c)-1;n...
function od (line 172) | function od(a){return null!=a.defaultPrevented?a.defaultPrevented:0==a.r...
function Ge (line 172) | function Ge(a){var b=a.which;null==b&&(a.button&1?b=1:a.button&2?b=3:a.b...
function Bc (line 172) | function Bc(a,b,c){a=a._handlers&&a._handlers[b];return c?a&&0<a.length?...
function V (line 172) | function V(a,b){function c(a){return function(){a.apply(null,
function rg (line 173) | function rg(){var a=Ib;Ib=null;for(var b=0;b<a.length;++b)a[b]()}
function D (line 173) | function D(a,b,c){"string"==typeof b&&(b={type:b,preventDefault:function...
function le (line 173) | function le(a){var b=a._handlers&&a._handlers.cursorActivity;if(b){a=a.c...
function ca (line 174) | function ca(a,b){return 0<Bc(a,b).length}
function fb (line 174) | function fb(a){a.prototype.on=function(a,c){y(this,a,c)};a.prototype.off...
function Ba (line 174) | function Ba(){this.id=null}
function ud (line 174) | function ud(a){for(;Cc.length<=a;)Cc.push(C(Cc)+" ");return Cc[a]}
function C (line 174) | function C(a){return a[a.length-1]}
function N (line 174) | function N(a,b){for(var c=0;c<a.length;++c)if(a[c]==b)return c;return-1}
function Wb (line 174) | function Wb(a,b){for(var c=[],d=0;d<a.length;d++)c[d]=b(a[d],d);return c}
function sg (line 175) | function sg(a,b,c){for(var d=0,e=c(b);d<a.length&&c(a[d])<=e;)d++;a.spli...
function Jb (line 175) | function Jb(){}
function pf (line 175) | function pf(a,b){Object.create?a=Object.create(a):(Jb.prototype=a,a=new ...
function da (line 175) | function da(a,b,c){b||(b={});for(var d in a)!a.hasOwnProperty(d)||!1===c...
function Ec (line 175) | function Ec(a){var b=Array.prototype.slice.call(arguments,1);return func...
function uc (line 175) | function uc(a,b){return b?-1<b.source.indexOf("\\w")&&qf(a)?!0:b.test(a)...
function rf (line 175) | function rf(a){for(var b in a)if(a.hasOwnProperty(b)&&
function zb (line 176) | function zb(a){return 768<=a.charCodeAt(0)&&tg.test(a)}
function r (line 176) | function r(a,b,c,d){a=document.createElement(a);c&&(a.className=c);d&&(a...
function wa (line 176) | function wa(a){for(var b=a.childNodes.length;0<b;--b)a.removeChild(a.fir...
function Y (line 176) | function Y(a,b){return wa(a).appendChild(b)}
function ma (line 176) | function ma(){for(var a=document.activeElement;a&&a.root&&a.root.activeE...
function Kb (line 177) | function Kb(a){return new RegExp("(^|\\s)"+a+"(?:$|\\s)\\s*")}
function Ad (line 177) | function Ad(a,b){a=a.split(" ");for(var c=0;c<a.length;c++)a[c]&&!Kb(a[c...
function sf (line 177) | function sf(a){if(document.body.getElementsByClassName)for(var b=documen...
function Cf (line 177) | function Cf(){var a;y(window,"resize",function(){null==a&&(a=setTimeout(...
function pg (line 178) | function pg(a){if(null==Cd){var b=r("span","\u200b");Y(a,r("span",[b,doc...
function Jf (line 178) | function Jf(a,b,c,d){if(!a)return d(b,c,"ltr");for(var e=!1,f=0;f<a.leng...
function hd (line 179) | function hd(a){return a.level%2?a.to:a.from}
function id (line 179) | function id(a){return a.level%2?a.from:a.to}
function fc (line 179) | function fc(a){return(a=fa(a))?hd(a[0]):0}
function gc (line 179) | function gc(a){var b=fa(a);return b?id(C(b)):a.text.length}
function tf (line 179) | function tf(a,b){var c=w(a.doc,b);a=pa(c);a!=c&&(b=F(a));a=(c=fa(a))?c[0...
function uf (line 179) | function uf(a,b){var c=tf(a,b.line);a=w(a.doc,c.line);var d=fa(a);return...
function Xb (line 179) | function Xb(a,
function Dd (line 180) | function Dd(a,b,c,d){if(!d)return b+c;do b+=c;while(0<b&&zb(a.text.charA...
function kd (line 180) | function kd(a,b,c,d){var e=fa(a);if(!e)return We(a,b,c,d);var f=Xb(e,b),...
function We (line 181) | function We(a,b,c,d){b+=c;if(d)for(;0<b&&zb(a.text.charAt(b));)b+=c;retu...
function c (line 185) | function c(){var d=a.getBoundingClientRect();document.elementFromPoint(d...
function b (line 187) | function b(a){if(!D(d,a)){if(d.somethingSelected())T={lineWise:!1,text:d...
function a (line 192) | function a(){c.poll()||b?(c.pollingFast=!1,c.slowPoll()):(b=!0,c.polling...
function b (line 194) | function b(){if(null!=g.selectionStart){var a=e.somethingSelected(),
function c (line 195) | function c(){d.contextMenuPending=!1;d.wrapper.style.cssText=p;g.style.c...
function b (line 198) | function b(a){if(!D(d,a)){if(d.somethingSelected())T={lineWise:!1,text:d...
function a (line 205) | function a(){b.cm.state.focused&&(b.pollSelection(),b.polling.set(b.cm.o...
function c (line 229) | function c(a){return"number"==typeof a||/^\d+$/.test(String(a))?a+"px":a}
function c (line 257) | function c(){a.value=h.getValue()}
function a (line 297) | function a(a){return 247>=a?"bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNN...
function b (line 298) | function b(a,b,c){this.level=a;this.from=b;this.to=c}
FILE: app/src/main/assets/code_mirror/mode/asciiarmor/asciiarmor.js
function d (line 1) | function d(a){var b=a.match(/^\s*\S/);a.skipToEnd();return b?"error":null}
FILE: app/src/main/assets/code_mirror/mode/asn.1/asn.1.js
function e (line 1) | function e(e){var b={};e=e.split(" ");for(var f=0;f<e.length;++f)b[e[f]]...
function f (line 1) | function f(a,c){var d=a.next();if('"'==d||"'"==d)return c.tokenize=n(d),...
function n (line 3) | function n(a){return function(c,d){for(var e=!1,b,f=!1;null!=(b=c.next()...
function m (line 3) | function m(a,c,d,b,e){this.indented=a;this.column=c;this.type=d;this.ali...
function k (line 3) | function k(a,c,d){var b=a.indented;a.context&&"statement"==a.context.typ...
function h (line 3) | function h(a){var c=a.context.type;
FILE: app/src/main/assets/code_mirror/mode/asterisk/asterisk.js
function c (line 1) | function c(a,b){var d,c=a.next();if(";"==c)return a.skipToEnd(),"comment...
FILE: app/src/main/assets/code_mirror/mode/clike/clike.js
function D (line 1) | function D(a,b,e,c,g,m){this.indented=a;this.column=b;this.type=e;this.i...
function z (line 1) | function z(a,b,c,r){var e=a.indented;a.context&&"statement"!=a.context.t...
function x (line 1) | function x(a){var b=a.context.type;
function H (line 2) | function H(a,b,c){if("variable"==b.prevToken||"variable-3"==b.prevToken|...
function I (line 2) | function I(a){for(;;){if(!a||"top"==a.type)return!0;if("}"==a.type&&"nam...
function c (line 2) | function c(a){var b={};a=a.split(" ");for(var c=0;c<a.length;++c)b[a[c]]...
function t (line 2) | function t(a,b){return"function"===
function n (line 3) | function n(a,b){if(!b.startOfLine)return!1;for(var c,r=null;c=a.peek();)...
function A (line 3) | function A(a,b){return"variable-3"==b.prevToken?"variable-3":!1}
function h (line 3) | function h(a){a.eatWhile(/[\w\.']/);return"number"}
function u (line 3) | function u(a,b){a.backUp(1);if(a.match(/(R|u8R|uR|UR|LR)/)){var c=a.matc...
function y (line 4) | function y(a,b){for(var c;null!=(c=a.next());)if('"'==c&&!a.eat('"')){b....
function B (line 4) | function B(a,b){var c=b.cpp11RawStringDelim.replace(/[^\w\s]/g,"\\$&");a...
function k (line 4) | function k(a,b){function c(a){if(a)for(var b in a)a.hasOwnProperty(b)&&r...
function E (line 5) | function E(a,b){for(var c=!1;!a.eol();){if(!c&&a.match('"""')){b.tokeniz...
function F (line 5) | function F(a){return function(b,c){for(var e=!1,g,m=!1;!b.eol();){if(!a&...
function C (line 5) | function C(a){return function(b,
function c (line 6) | function c(a,b){var c=a.next();if(w[c]){var p=w[c](a,b);if(!1!==p)return...
function k (line 7) | function k(a){return function(b,c){for(var d=!1,p,f=!1;null!=(p=b.next()...
function g (line 8) | function g(a,b){for(var c=!1,p;p=a.next();){if("/"==p&&c){b.tokenize=nul...
function m (line 8) | function m(a,c){b.typeFirstDefinitions&&a.eol()&&I(c.context)&&(c.typeAt...
FILE: app/src/main/assets/code_mirror/mode/clojure/clojure.js
function f (line 1) | function f(a){var c={};a=a.split(" ");for(var b=0;b<a.length;++b)c[a[b]]...
function h (line 1) | function h(a,c,b){this.indent=a;this.type=c;this.prev=b}
FILE: app/src/main/assets/code_mirror/mode/cmake/cmake.js
function b (line 1) | function b(a,d){for(var c,b,e=!1;!a.eol()&&(c=a.next())!=d.pending;){if(...
function f (line 1) | function f(a,d){var c=a.next();if("$"===c)return a.match(g)?"variable-2":
FILE: app/src/main/assets/code_mirror/mode/cobol/cobol.js
function c (line 1) | function c(a){var b={};a=a.split(" ");for(var d=0;d<a.length;++d)b[a[d]]...
FILE: app/src/main/assets/code_mirror/mode/coffeescript/coffeescript.js
function k (line 1) | function k(a){return new RegExp("^(("+a.join(")|(")+"))\\b")}
function h (line 1) | function h(a,b){if(a.sol()){null===b.scope.align&&(b.scope.align=!1);var...
function p (line 3) | function p(a,b,c){return function(d,
function u (line 4) | function u(a,b){for(;!a.eol();){a.eatWhile(/[^#]/);if(a.match("###")){b....
function n (line 4) | function n(a,b,c){c=c||"coffee";for(var d=0,f=!1,r=null,g=b.scope;g;g=g....
function m (line 5) | function m(a,b){if(b.scope.prev){if("coffee"===b.scope.type){a=a.indenta...
FILE: app/src/main/assets/code_mirror/mode/commonlisp/commonlisp.js
function g (line 1) | function g(a){for(var b;b=a.next();)if("\\"==b)a.next();else if(!k.test(...
function f (line 1) | function f(a,b){if(a.eatSpace())return d="ws",null;if(a.match(l))return"...
function m (line 3) | function m(a,b){for(var c=!1,d;d=a.next();){if('"'==d&&!c){b.tokenize=f;...
function n (line 3) | function n(a,b){for(var c,e;c=a.next();){if("#"==c&&"|"==e){b.tokenize=f...
FILE: app/src/main/assets/code_mirror/mode/crystal/crystal.js
function m (line 1) | function m(a,b){return new RegExp((b?"":"^")+"(?:"+a.join("|")+")"+(b?"$...
function h (line 1) | function h(a,b,c){c.tokenize.push(a);return a(b,c)}
function r (line 1) | function r(a,b){if(a.eatSpace())return null;if("\\"!=b.lastToken&&a.matc...
function q (line 5) | function q(a,b,c,e){return function(d,f){if(!e&&d.match(a))return f.toke...
function n (line 5) | function n(a,b,c){return function(e,d){return!c&&e.match("{"+a)?(d.curre...
function A (line 6) | function A(a,b){if(a.eatSpace())return null;a.match(k)?a.eat(/[!?]/):a.m...
function l (line 6) | function l(a,b){if(a.eatSpace())return null;a.match(p);b.tokenize.pop();...
function t (line 6) | function t(a,b,c){return function(e,d){for(var f=!1;e.peek();)if(f)e.nex...
FILE: app/src/main/assets/code_mirror/mode/css/css.js
function l (line 1) | function l(d){for(var e={},f=0;f<d.length;++f)e[d[f]]=!0;return e}
function m (line 1) | function m(d,e){for(var f=!1,k;null!=(k=d.next());){if(f&&"/"==k){e.toke...
function f (line 1) | function f(a,c){K=c;return a}
function l (line 1) | function l(a,c){var b=a.next();if(w[b]){var d=
function m (line 3) | function m(a){return function(c,
function y (line 4) | function y(a,c){a.next();a.match(/\s*[\"\')]/,!1)?c.tokenize=null:c.toke...
function r (line 4) | function r(a,c,b){this.type=a;this.indent=c;this.prev=b}
function h (line 4) | function h(a,c,b,d){a.context=new r(b,c.indentation()+(!1===d?0:v),a.con...
function n (line 4) | function n(a){a.context.prev&&(a.context=a.context.prev);return a.contex...
function q (line 4) | function q(a,c,b,d){for(d=
function t (line 5) | function t(a){a=a.current().toLowerCase();g=F.hasOwnProperty(a)?"atom":E...
FILE: app/src/main/assets/code_mirror/mode/d/d.js
function h (line 1) | function h(k){var g={};k=k.split(" ");for(var f=0;f<k.length;++f)g[k[f]]...
function h (line 1) | function h(a,b){var c=a.next();if(q[c]){var d=q[c](a,b);if(!1!==d)return...
function v (line 3) | function v(a){return function(b,c){for(var d=!1,e,f=!1;null!=(e=b.next()...
function n (line 3) | function n(a,b){for(var c=!1,d;d=a.next();){if("/"==d&&c){b.tokenize=nul...
function u (line 3) | function u(a,b,c,d,e){this.indented=a;this.column=b;this.type=c;this.ali...
function m (line 3) | function m(a,b,c){var d=a.indented;a.context&&"statement"==a.context.type&&
function l (line 4) | function l(a){var b=a.context.type;if(")"==b||"]"==b||"}"==b)a.indented=...
FILE: app/src/main/assets/code_mirror/mode/dart/dart.js
function d (line 1) | function d(b){for(var a={},c=0;c<b.length;++c)a[b[c]]=!0;return a}
function f (line 1) | function f(b,a,c,e){function d(a,c){for(var d=!1;!a.eol();){if(!e&&!d&&"...
function n (line 2) | function n(b,a){b.eat("$");b.eat("{")?a.tokenize=null:a.tokenize=p;retur...
function p (line 2) | function p(b,a){b.eatWhile(/[\w_]/);a.tokenize=(a.interpolationStack||(a...
function g (line 2) | function g(b){return function(a,c){for(var d;d=a.next();)if("*"==d&&a.ea...
FILE: app/src/main/assets/code_mirror/mode/django/django.js
function c (line 1) | function c(b,a){if(b.match("{{"))return a.tokenize=m,"tag";if(b.match("{...
function d (line 2) | function d(b,a){return function(c,d){!d.escapeNext&&c.eat(b)?d.tokenize=...
function m (line 2) | function m(b,a){if(a.waitDot){a.waitDot=!1;if("."!=b.peek())return"null"...
function l (line 4) | function l(b,a){if(a.waitDot){a.waitDot=!1;if("."!=b.peek())return"null"...
function n (line 6) | function n(b,a){b.match(/^.*?#\}/)?a.tokenize=c:b.skipToEnd();return"com...
function p (line 6) | function p(b,
FILE: app/src/main/assets/code_mirror/mode/dtd/dtd.js
function f (line 1) | function f(b,a){d=a;return b}
function g (line 1) | function g(b,a){var c=b.next();if("<"==c&&b.eat("!")){if(b.eatWhile(/[\-...
function h (line 2) | function h(b,a){for(var c=0,d;null!=(d=
function l (line 3) | function l(b){return function(a,c){for(var d=!1,e;null!=(e=a.next());){i...
function k (line 3) | function k(b,a){return function(c,d){for(;!c.eol();){if(c.match(a)){d.to...
FILE: app/src/main/assets/code_mirror/mode/dylan/dylan.js
function k (line 1) | function k(a,e,b){e.tokenize=b;return b(a,e)}
function l (line 1) | function l(a,e){var b=a.peek();if("'"==b||'"'==b)return a.next(),k(a,e,m...
function q (line 4) | function q(a,c){for(var b=!1,e=!1,d=0,g;g=a.next();){if("/"==g&&b)if(0<d...
function m (line 4) | function m(a,c){return function(b,e){for(var d=!1,g,f=!1;null!=(g=b.next...
FILE: app/src/main/assets/code_mirror/mode/ecl/ecl.js
function f (line 1) | function f(a){var b={};a=a.split(" ");for(var c=0;c<a.length;++c)b[a[c]]...
function l (line 1) | function l(a,b){var c=a.next();if(p[c]){var g=p[c](a,b);if(!1!==g)return...
function v (line 3) | function v(a){return function(b,c){for(var g=!1,d,e=!1;null!=(d=b.next()...
function q (line 4) | function q(a,b){for(var c=!1,d;d=a.next();){if("/"==d&&c){b.tokenize=l;b...
function u (line 4) | function u(a,b,c,d,e){this.indented=a;this.column=b;this.type=c;this.ali...
function m (line 4) | function m(a,b,c){return a.context=new u(a.indented,b,c,null,a.context)}
function k (line 4) | function k(a){var b=a.context.type;if(")"==b||"]"==b||"}"==b)a.indented=...
FILE: app/src/main/assets/code_mirror/mode/eiffel/eiffel.js
function d (line 1) | function d(b){for(var a={},c=0,d=b.length;c<d;++c)a[b[c]]=!0;return a}
function e (line 1) | function e(b,a){if(b.eatSpace())return null;var c=b.next();return'"'==c|...
function h (line 2) | function h(b,a,c){return function(d,e){for(var f=!1,g;null!=(g=d.next())...
FILE: app/src/main/assets/code_mirror/mode/elm/elm.js
function d (line 1) | function d(a,c,b){c(b);return b(a,c)}
function f (line 1) | function f(){return function(a,c){if(a.eatWhile(h))return null;var b=a.n...
function k (line 3) | function k(a,c){return 0==c?f():function(b,d){for(var e=c;!b.eol();){var...
function l (line 3) | function l(a,c){for(;!a.eol();){var b=a.next();if('"'==b)return c(f()),"...
function v (line 3) | function v(a,c){if(a.eat("\\"))return d(a,c,l);a.next();c(f());return"er...
FILE: app/src/main/assets/code_mirror/mode/erlang/erlang.js
function z (line 1) | function z(a,b){if(b.in_string)return b.in_string=!n(a,'"',"\\"),c(b,a,"...
function v (line 5) | function v(a,b,d){if(1==a.current().length&&b.test(a.current())){for(a.b...
function x (line 5) | function x(a,b,d){if(1==a.current().length&&b.test(a.current())){for(;b....
function n (line 5) | function n(a,b,d){for(;!a.eol();){var f=a.next();if(f==b)return!0;
function g (line 6) | function g(a,b){return-1<b.indexOf(a)}
function c (line 6) | function c(a,b,d){var f;f=b.current();var c=b.column();b=b.indentation()...
function N (line 8) | function N(a){return{token:a,column:0,indent:0,type:a}}
function m (line 8) | function m(a,b){var d=a.tokenStack.length;b=b?b:1;return d<b?!1:a.tokenS...
function M (line 8) | function M(a){if(!a.length)return a;var b=a.length-1;if("dot"===a[b].typ...
function e (line 9) | function e(a,b){for(var d in b)for(var c=a.length-1,r=b[d],h=c-1;-1<h;h-...
function O (line 10) | function O(a,b){var d,c=y.indentUnit;b=b.match(/,|[a-z]+|\}|\]|\)|>>|\|+...
function u (line 12) | function u(a,b){a=a.tokenStack;b=q(a,"token",b);return l(a[b])?a[b]:!1}
function q (line 12) | function q(a,b,d){for(var c=a.length-1;-1<c;c--)if(g(a[c][b],d))return c...
function l (line 12) | function l(a){return!1!==a&&null!=a}
FILE: app/src/main/assets/code_mirror/mode/fcl/fcl.js
function f (line 1) | function f(a,b){var c=a.next();if(/[\d\.]/.test(c))return"."==c?a.match(...
function h (line 2) | function h(a,b){for(var c=!1,e;e=a.next();){if(("/"==e||")"==e)&&c){b.to...
function m (line 2) | function m(a,b,c,e,d){this.indented=a;this.column=b;this.type=c;this.ali...
FILE: app/src/main/assets/code_mirror/mode/forth/forth.js
function e (line 1) | function e(d){var b=[];d.split(" ").forEach(function(a){b.push({name:a})...
function d (line 2) | function d(b,a){var c;for(c=b.length-1;0<=c;c--)if(b[c].name===a.toUpper...
FILE: app/src/main/assets/code_mirror/mode/fortran/fortran.js
function b (line 1) | function b(a){for(var d={},c=0;c<a.length;++c)d[a[c]]=!0;return d}
function g (line 1) | function g(a,d){if(a.match(h))return"operator";var c=a.next();if("!"==c)...
function k (line 2) | function k(a){return function(d,c){for(var b=!1,f,e=!1;null!=(f=d.next()...
FILE: app/src/main/assets/code_mirror/mode/gas/gas.js
function n (line 1) | function n(b){f="@";l.syntax="builtin";a.r0="variable";a.r1="variable";a...
function m (line 2) | function m(a,e){for(var b=!1,d;null!=(d=a.next());){if("/"===d&&b){e.tok...
FILE: app/src/main/assets/code_mirror/mode/go/go.js
function g (line 1) | function g(a,c){var b=a.next();if('"'==b||"'"==b||"`"==b)return c.tokeni...
function q (line 2) | function q(a){return function(c,b){for(var d=!1,e,f=!1;null!=(e=c.next()...
function k (line 3) | function k(a,c){for(var b=!1,d;d=a.next();){if("/"==d&&b){c.tokenize=g;b...
function m (line 3) | function m(a,c,b,d,e){this.indented=a;this.column=c;this.type=b;this.ali...
function h (line 3) | function h(a,c,b){return a.context=new m(a.indented,c,b,null,a.context)}
function n (line 3) | function n(a){if(a.context.prev){var c=a.context.type;if(")"==c||"]"==c|...
FILE: app/src/main/assets/code_mirror/mode/groovy/groovy.js
function h (line 1) | function h(a){var b={};a=a.split(" ");for(var c=0;c<a.length;++c)b[a[c]]...
function l (line 1) | function l(a,b){var c=a.next();if('"'==c||"'"==c)return n(c,a,b);if(/[\[...
function n (line 3) | function n(a,b,c){function d(c,b){for(var d=!1,f,g=!e;null!=(f=c.next())...
function w (line 3) | function w(){function a(a,
function p (line 4) | function p(a,b){for(var c=!1,d;d=a.next();){if("/"==d&&c){b.tokenize.pop...
function m (line 4) | function m(a,b){return!a||"operator"==a||"->"==a||/[\.\[\{\(,;:]/.test(a...
function q (line 4) | function q(a,b,c,d,e){this.indented=a;this.column=b;this.type=c;this.ali...
function k (line 4) | function k(a,
function g (line 5) | function g(a){var b=a.context.type;if(")"==b||"]"==b||"}"==b)a.indented=...
FILE: app/src/main/assets/code_mirror/mode/haml/haml.js
function l (line 1) | function l(b){return function(a,c){return a.peek()==b&&1==c.rubyState.to...
function e (line 1) | function e(b,a){return b.match("-#")?
function f (line 2) | function f(b,a){var c=b.peek();if("comment"==a.previousToken.style&&a.in...
FILE: app/src/main/assets/code_mirror/mode/haskell/haskell.js
function g (line 1) | function g(a,c,b){c(b);return b(a,c)}
function f (line 1) | function f(a,c){if(a.eatWhile(l))return null;var b=a.next();if(u.test(b)...
function m (line 3) | function m(a,c){return 0==c?f:function(b,d){for(var e=c;!b.eol();){var q...
function n (line 3) | function n(a,c){for(;!a.eol();){var b=a.next();if('"'==b)return c(f),"st...
function z (line 3) | function z(a,c){if(a.eat("\\"))return g(a,c,n);a.next();c(f);return"error"}
function a (line 4) | function a(a){return function(){for(var b=0;b<arguments.length;b++)c[arg...
FILE: app/src/main/assets/code_mirror/mode/haxe/haxe.js
function c (line 1) | function c(a){return{type:a,style:"keyword"}}
function p (line 1) | function p(a,d){for(var b=!1,k;null!=(k=a.next());){if(k==d&&!b)return!0...
function n (line 1) | function n(a,d,b){l=a;M=b;return d}
function A (line 1) | function A(a,d){var b=a.next();if('"'==b||"'"==b)return b=X(b),d.tokeniz...
function X (line 3) | function X(a){return function(b,c){p(b,a)&&(c.tokenize=A);return n("stri...
function Y (line 3) | function Y(a,b){for(var d=!1,k;k=a.next();){if("/"==k&&d){b.tokenize=
function O (line 4) | function O(a,b,c,k,g,f){this.indented=a;this.column=b;this.type=c;this.p...
function P (line 4) | function P(a){for(var b=g.state,c=b.importedtypes;c;c=c.next)if(c.name==...
function t (line 4) | function t(){for(var a=arguments.length-1;0<=a;a--)g.cc.push(arguments[a])}
function b (line 4) | function b(){t.apply(null,arguments);return!0}
function Q (line 4) | function Q(a,b){for(;b;b=b.next)if(b.name==a)return!0;return!1}
function B (line 4) | function B(a){var b=g.state;b.context?
function G (line 5) | function G(){g.state.context||(g.state.localVars=Z);g.state.context={pre...
function C (line 5) | function C(){g.state.localVars=g.state.context.vars;g.state.context=g.st...
function h (line 5) | function h(a,b){var d=function(){var d=g.state;d.lexical=new O(d.indente...
function e (line 5) | function e(){var a=
function m (line 6) | function m(a){function d(c){return c==a?b():";"==a?t():b(d)}return d}
function u (line 6) | function u(a){return"@"==a?b(R):"var"==a?b(h("vardef"),H,m(";"),e):"keyw...
function r (line 7) | function r(a){return V.hasOwnProperty(a)||"type"==a?b(v):"function"==a?b...
function J (line 7) | function J(a){return a.match(/[;\}\)\],]/)?t():t(r)}
function v (line 7) | function v(a,d){if("operator"==a&&/\+\+|--/.test(d))return b(v);if("oper...
function S (line 8) | function S(a){if("attribute"==a)return b(S);if("function"==a)return b(x)...
function R (line 8) | function R(a){if(":"==a||"variable"==a)return b(R);if("("==a)return b(h(...
function fa (line 8) | function fa(a){if("variable"==a)return b()}
function U (line 8) | function U(a,d){if("variable"==a&&/[A-Z]/.test(d.charAt(0)))return P(d),...
function ca (line 9) | function ca(a,d){if("variable"==a&&/[A-Z]/.test(d.charAt(0)))return P(d)...
function ba (line 9) | function ba(a){return":"==a?b(e,u):t(v,m(";"),e)}
function ea (line 9) | function ea(a){if("variable"==a)return g.marked="property",b()}
function da (line 9) | function da(a){"variable"==a&&(g.marked="property");if(V.hasOwnProperty(...
function w (line 9) | function w(a,d){function c(k){return","==k?b(a,c):k==d?b():b(m(d))}retur...
function I (line 9) | function I(a){return"}"==a?b():t(u,I)}
function H (line 9) | function H(a,d){return"variable"==
function W (line 10) | function W(a,d){if("="==d)return b(r,W);if(","==a)return b(H)}
function aa (line 10) | function aa(a,d){return"variable"==a?(B(d),b(ga,r)):t()}
function ga (line 10) | function ga(a,d){if("in"==d)return b()}
function x (line 10) | function x(a,d){if("variable"==a||"type"==a)return B(d),b(x);if("new"==d...
function D (line 10) | function D(a){if(":"==a)return b(ha)}
function ha (line 10) | function ha(a){if("type"==a||"variable"==a)return b();if("{"==a)return b...
function ia (line 10) | function ia(a){if("variable"==a)return b(D)}
function T (line 10) | function T(a,d){if("variable"==
FILE: app/src/main/assets/code_mirror/mode/htmlmixed/htmlmixed.js
function p (line 1) | function p(f){var c=k[f];return c?c:k[f]=new RegExp("\\s+"+f+"\\s*=\\s*(...
function q (line 1) | function q(f,c){return(f=f.match(p(c)))?/^\s*(.*?)\s*$/.exec(f[2])[1]:
function l (line 2) | function l(f,c){for(var d in f)for(var g=c[d]||(c[d]=[]),h=f[d],e=h.leng...
function r (line 2) | function r(d,c){for(var f=0;f<d.length;f++){var g=d[f];if(!g[0]||g[1].te...
function k (line 3) | function k(a,b){var c=g.token(a,b.htmlState),e=/\btag\b/.test(c),m;if(e&...
FILE: app/src/main/assets/code_mirror/mode/http/http.js
function c (line 1) | function c(a,b){a.skipToEnd();b.cur=d;return"error"}
function g (line 1) | function g(a,b){return a.match(/^HTTP\/\d\.\d/)?(b.cur=h,"keyword"):a.ma...
function h (line 1) | function h(a,b){var e=a.match(/^\d+/);if(!e)return c(a,b);b.cur=l;a=
function l (line 2) | function l(a,b){a.skipToEnd();b.cur=d;return null}
function k (line 2) | function k(a,b){a.eatWhile(/\S/);b.cur=m;return"string-2"}
function m (line 2) | function m(a,b){return a.match(/^HTTP\/\d\.\d$/)?(b.cur=d,"keyword"):c(a...
function d (line 2) | function d(a){if(a.sol()&&!a.eat(/[ \t]/)){if(a.match(/^.*?:/))return"at...
function f (line 3) | function f(a){a.skipToEnd();return null}
FILE: app/src/main/assets/code_mirror/mode/idl/idl.js
function c (line 1) | function c(a){return new RegExp("^(("+a.join(")|(")+"))\\b","i")}
function f (line 1) | function f(a){if(a.eatSpace())return null;if(a.match(";"))return a.skipT...
FILE: app/src/main/assets/code_mirror/mode/javascript/javascript.js
function fa (line 1) | function fa(p,q,n){return/^(?:operator|sof|keyword c|case|new|[\[{}\(,;:...
function n (line 1) | function n(a,c,b){E=a;M=b;return c}
function y (line 1) | function y(a,c){var b=a.next();if('"'==b||"'"==b)return c.tokenize=
function ta (line 4) | function ta(a){return function(c,b){var e=!1,k;if(P&&"@"==c.peek()&&c.ma...
function N (line 4) | function N(a,c){for(var b=!1,e;e=a.next();){if("/"==e&&b){c.tokenize=y;b...
function U (line 5) | function U(a,c){for(var b=!1,e;null!=(e=a.next());){if(!b&&("`"==e||"$"=...
function W (line 5) | function W(a,c){c.fatArrowAt&&(c.fatArrowAt=null);var b=a.string.indexOf...
function ha (line 6) | function ha(a,b,d,e,f,z){this.indented=a;this.column=b;this.type=d;this....
function f (line 6) | function f(){for(var a=arguments.length-1;0<=a;a--)d.cc.push(arguments[a])}
function b (line 6) | function b(){f.apply(null,arguments);return!0}
function F (line 6) | function F(a){function b(b){for(;b;b=b.next)if(b.name==a)return!0;return...
function G (line 7) | function G(){d.state.context={prev:d.state.context,vars:d.state.localVar...
function H (line 7) | function H(){d.state.localVars=d.state.context.vars;d.state.context=d.st...
function l (line 7) | function l(a,b){var c=function(){var c=d.state,k=c.indented;if("stat"==c...
function g (line 7) | function g(){var a=d.state;a.lexical.prev&&(")"==a.lexical.type&&
function h (line 8) | function h(a){function c(d){return d==a?b():";"==a?f():b(c)}return c}
function r (line 8) | function r(a,c){return"var"==a?b(l("vardef",c.length),X,h(";"),g):"keywo...
function m (line 9) | function m(a){return ja(a,!1)}
function t (line 9) | function t(a){return ja(a,!0)}
function Y (line 9) | function Y(a){return"("!=a?f():b(l(")"),m,h(")"),g)}
function ja (line 9) | function ja(a,c){if(d.state.fatArrowAt==d.stream.start){var k=
function aa (line 10) | function aa(a){return a.match(/[;\}\)\],]/)?f():f(m)}
function Ca (line 10) | function Ca(a){return a.match(/[;\}\)\],]/)?f():f(t)}
function A (line 10) | function A(a,c){return","==a?b(m):I(a,
function I (line 11) | function I(a,c,d){var e=0==d?A:I,k=0==d?m:t;if("=>"==a)return b(G,d?ka:l...
function R (line 11) | function R(a,c){return"quasi"!=a?f():"${"!=c.slice(c.length-2)?b(R):b(m,...
function Ga (line 11) | function Ga(a){if("}"==a)return d.marked="string-2",d.state.tokenize=U,b...
function la (line 11) | function la(a){W(d.stream,d.state);return f("{"==a?r:
function ka (line 12) | function ka(a){W(d.stream,d.state);return f("{"==a?r:t)}
function Ea (line 12) | function Ea(a){return function(c){return"."==c?b(a?Ha:Ia):f(a?t:m)}}
function Ia (line 12) | function Ia(a,c){if("target"==c)return d.marked="keyword",b(A)}
function Ha (line 12) | function Ha(a,c){if("target"==c)return d.marked="keyword",b(I)}
function xa (line 12) | function xa(a){return":"==a?b(g,r):f(A,h(";"),g)}
function Fa (line 12) | function Fa(a){if("variable"==a)return d.marked="property",b()}
function ba (line 12) | function ba(a,c){if("async"==a)return d.marked="property",b(ba);if("vari...
function Ja (line 13) | function Ja(a){if("variable"!=a)return f(B);d.marked="property";return b...
function B (line 13) | function B(a){if(":"==a)return b(t);if("("==a)return f(w)}
function x (line 13) | function x(a,c){function k(e,g){return","==e?(e=d.state.lexical,"call"==...
function J (line 14) | function J(a,c,k){for(var e=3;e<arguments.length;e++)d.cc.push(arguments...
function Q (line 14) | function Q(a){return"}"==a?b():f(r,Q)}
function S (line 14) | function S(a,c){if(K){if(":"==a)return b(v);if("?"==c)return b(S)}}
function Ka (line 14) | function Ka(a,c){if("="==c)return b(t)}
function v (line 14) | function v(a){if("variable"==a)return d.marked="variable-3",b(ca);if("{"...
function La (line 14) | function La(a){if("=>"==a)return b(v)}
function ma (line 15) | function ma(a){if("variable"==a||"keyword"==d.style)return d.marked="pro...
function na (line 15) | function na(a){if("variable"==a)return b(na);if(":"==a)return b(v)}
function ca (line 15) | function ca(a,c){if("<"==c)return b(x(v,">"),ca);if("["==a)return b(h("]...
function X (line 15) | function X(){return f(u,S,da,Ma)}
function u (line 15) | function u(a,c){if("modifier"==a)return b(u);if("variable"==a)return F(c...
function Na (line 15) | function Na(a,c){if("variable"==a&&!d.stream.match(/^\s*:/,
function da (line 16) | function da(a,c){if("="==c)return b(t)}
function Ma (line 16) | function Ma(a){if(","==a)return b(X)}
function ia (line 16) | function ia(a,c){if("keyword b"==a&&"else"==c)return b(l("form","else"),...
function wa (line 16) | function wa(a){if("("==a)return b(l(")"),Oa,h(")"),g)}
function Oa (line 16) | function Oa(a){return"var"==a?b(X,h(";"),T):";"==a?b(T):"variable"==a?b(...
function Pa (line 16) | function Pa(a,c){return"in"==c||"of"==c?(d.marked="keyword",b(m)):b(A,T)}
function T (line 16) | function T(a,c){return";"==
function oa (line 17) | function oa(a){")"!=a&&b(m)}
function w (line 17) | function w(a,c){if("*"==c)return d.marked="keyword",b(w);if("variable"==...
function Z (line 17) | function Z(a){return"spread"==a?b(Z):f(u,S,Ka)}
function ya (line 17) | function ya(a,c){if("variable"==a)return F(c),b(pa)}
function pa (line 17) | function pa(a,c){if("extends"==c)return b(K?v:m,pa);if("{"==a)return b(l...
function L (line 17) | function L(a,c){if("variable"==a||"keyword"==d.style){if(("static"==c||"...
function Qa (line 18) | function Qa(a){return":"==a?b(v):f(w)}
function za (line 18) | function za(a,c){return"*"==c?(d.marked="keyword",b(qa,h(";"))):"default...
function Aa (line 18) | function Aa(a){return"string"==a?b():f(ea,qa)}
function ea (line 18) | function ea(a,c){if("{"==a)return J(ea,"}");"variable"==
function Ra (line 19) | function Ra(a,c){if("as"==c)return d.marked="keyword",b(ea)}
function qa (line 19) | function qa(a,c){if("from"==c)return d.marked="keyword",b(m)}
function Da (line 19) | function Da(a){return"]"==a?b():f(x(t,"]"))}
function a (line 19) | function a(a){return{type:a,style:"keyword"}}
FILE: app/src/main/assets/code_mirror/mode/jinja2/jinja2.js
function c (line 1) | function c(a,b){var c=a.peek();if(b.incomment)return a.skipTo("#}")?(a.e...
FILE: app/src/main/assets/code_mirror/mode/jsx/jsx.js
function l (line 1) | function l(d,l,n,p){this.state=d;this.mode=l;this.depth=n;this.prev=p}
function q (line 1) | function q(e){return new l(d.copyState(e.mode,e.state),e.mode,e.depth,e....
function n (line 1) | function n(a){var c=
function p (line 2) | function p(a,c){if(c.context.mode==g)return r(a,c,c.context);var b=c.con...
function r (line 2) | function r(a,c,b){if(2==b.depth)return a.match(/^.*?\*\//)?b.depth=
FILE: app/src/main/assets/code_mirror/mode/julia/julia.js
function g (line 1) | function g(b,a){"undefined"===typeof a&&(a="\\b");return new RegExp("^((...
function h (line 1) | function h(b){return 0==b.scopes.length?null:b.scopes[b.scopes.length-1]}
function k (line 1) | function k(b,a){if(b.match(/^#=/,!1))return a.tokenize=q,a.tokenize(b,a)...
function p (line 5) | function p(b,a){var d=b.match(/^(\(\s*)/);d&&(0>a.firstParenPos&&(a.firs...
function q (line 6) | function q(b,a){b.match(/^#=/)&&a.weakScopes++;b.match(/.*?(?=(#=|=#))/)...
function x (line 6) | function x(b,a){var d=!1,c;if(b.match(D))d=!0;else if(c=b.match(/\\u([a-...
function z (line 7) | function z(b){function a(a,c){for(;!a.eol();)if(a.eatWhile(/[^"\\]/),a.e...
FILE: app/src/main/assets/code_mirror/mode/lua/lua.js
function e (line 1) | function e(a){return new RegExp("^(?:"+a.join("|")+")$","i")}
function h (line 1) | function h(a){for(var b=0;a.eat("=");)++b;a.eat("[");return b}
function g (line 1) | function g(a,b){var c=a.next();if("-"==c&&a.eat("-")){if(a.eat("[")&&a.e...
function k (line 2) | function k(a,b){return function(c,d){for(var f=null,e;null!=(e=c.next())...
function m (line 2) | function m(a){return function(b,c){for(var d=!1,e;null!=(e=b.next())&&(e...
FILE: app/src/main/assets/code_mirror/mode/markdown/markdown.js
function r (line 1) | function r(b,a,c){a.f=a.inline=c;return c(b,a)}
function t (line 1) | function t(b){return!b||!/\S/.test(b.string)}
function w (line 1) | function w(b){b.linkTitle=!1;b.em=!1;b.strong=!1;b.strikethrough=!1;b.qu...
function p (line 2) | function p(b,a){var e=b.sol(),g=!1!==a.list,l=a.indentedCode;a.indentedC...
function u (line 5) | function u(b,a){var c=n.token(b,a.htmlState);if(!x){var d=h.innerMode(n,...
function J (line 5) | function J(b,a){if(a.fencedChars&&b.match(a.fencedChars,!1))return a.loc...
function K (line 6) | function K(b,a){b.match(a.fencedChars);a.block=p;a.f=m;a.fencedChars=nul...
function d (line 6) | function d(b){var a=[];if(b.formatting){a.push(f.formatting);"string"===...
function L (line 8) | function L(b,
function m (line 9) | function m(b,a){var e=a.text(b,a);if("undefined"!==typeof e)return e;if(...
function C (line 15) | function C(b,a){if(">"===b.next())return a.f=a.inline=m,c.highlightForma...
function B (line 15) | function B(b,a){if(b.eatSpace())return null;b=b.next();return"("===b||"[...
function N (line 16) | function N(b){return function(a,e){if(a.next()===b)return e.f=e.inline=m...
function G (line 16) | function G(b,a){return b.match(/^([^\]\\]|\\.)*\]:/,!1)?(a.f=P,b.next(),...
function P (line 16) | function P(b,a){if(b.match(/^\]:/,!0))return a.f=a.inline=Q,c.highlightF...
function Q (line 17) | function Q(b,a){if(b.eatSpace())return null;b.match(/^[^\s]+/,!0);void 0...
FILE: app/src/main/assets/code_mirror/mode/mathematica/mathematica.js
function f (line 1) | function f(a,b){var d;d=a.next();if('"'===d)return b.tokenize=g,b.tokeni...
function g (line 3) | function g(a,b){for(var d,c=!1,e=!1;null!=(d=a.next());){if('"'===d&&!e)...
function h (line 3) | function h(a,b){for(var d,c;0<b.commentLevel&&null!=
FILE: app/src/main/assets/code_mirror/mode/mbox/mbox.js
function g (line 1) | function g(b,a){if(b.sol()){a.inSeparator=!1;if(a.inHeader&&b.match(h))r...
FILE: app/src/main/assets/code_mirror/mode/mirc/mirc.js
function e (line 1) | function e(a){var b={};a=a.split(" ");for(var d=0;d<a.length;++d)b[a[d]]...
function f (line 1) | function f(a,b){var d=b.beforeParams;b.beforeParams=!1;var c=a.next();if...
function m (line 3) | function m(a,b){for(var d=!1,c;c=a.next();){if("/"==c&&d){b.tokenize=f;b...
function n (line 3) | function n(a,b){for(var d=0,c;c=a.next();){if(";"==c&&2==d){b.tokenize=f...
FILE: app/src/main/assets/code_mirror/mode/mllike/mllike.js
function f (line 1) | function f(a,c){var d=a.next();if('"'===d)return c.tokenize=k,c.tokenize...
function k (line 2) | function k(a,c){for(var d,b=!1,e=!1;null!=(d=a.next());){if('"'===d&&!e)...
function l (line 2) | function l(a,c){for(var d,b;0<c.commentLevel&&null!=(b=a.next());)"("===...
FILE: app/src/main/assets/code_mirror/mode/modelica/modelica.js
function e (line 1) | function e(c){var d={};c=c.split(" ");for(var f=0;f<c.length;++f)d[c[f]]...
function f (line 1) | function f(a,b){a.skipToEnd();b.tokenize=null;return"comment"}
function n (line 1) | function n(a,b){for(var l=!1,c;c=a.next();){if(l&&"/"==c){b.tokenize=nul...
function k (line 2) | function k(a,b){for(var c=!1,d;null!=(d=a.next());){if('"'==d&&!c){b.tok...
function p (line 2) | function p(a,b){for(a.eatWhile(h);a.eat(h)||a.eat(m););a=a.current();!b....
function u (line 2) | function u(a,b){for(;a.eat(/[^']/););b.tokenize=null;
function e (line 3) | function e(a,b){a.eatWhile(h);a.eat(".")&&a.eatWhile(h);if(a.eat("e")||a...
function f (line 5) | function f(c){if(c)for(var d in c)c.hasOwnProperty(d)&&e.push(d)}
FILE: app/src/main/assets/code_mirror/mode/mscgen/mscgen.js
function d (line 1) | function d(a){return new RegExp("\\b("+a.join("|")+")\\b","i")}
function e (line 1) | function e(a){return new RegExp("("+a.join("|")+")","i")}
function f (line 1) | function f(){return{inComment:!1,inString:!1,inAttributeList:!1,inScript...
function g (line 1) | function g(a){return{inComment:a.inComment,inString:a.inString,inAttribu...
function h (line 2) | function h(a){return function(b,c){if(b.match(e(a.brackets),!0,!0))retur...
FILE: app/src/main/assets/code_mirror/mode/mumps/mumps.js
function d (line 1) | function d(a){return new RegExp("^(("+a.join(")|(")+"))\\b","i")}
function e (line 1) | function e(a,b){a.sol()&&(b.label=!0,b.commandMode=0);var c=a.peek();if(...
FILE: app/src/main/assets/code_mirror/mode/nginx/nginx.js
function k (line 1) | function k(a){var c={};a=a.split(" ");for(var b=0;b<a.length;++b)c[a[b]]...
function e (line 1) | function e(a,c){g=c;return a}
function h (line 1) | function h(a,c){a.eatWhile(/[\w\$_]/);var b=a.current();if(n.propertyIsE...
function l (line 3) | function l(a,c){for(var b=!1,f;null!=(f=a.next());){if(b&&"/"==f){c.toke...
function m (line 3) | function m(a,c){for(var b=0,f;null!=(f=a.next());){if(2<=b&&">"==f){c.to...
function r (line 3) | function r(a){return function(c,b){for(var f=!1,d;null!=(d=c.next())&&
FILE: app/src/main/assets/code_mirror/mode/ntriples/ntriples.js
function d (line 1) | function d(f,b){var c=f.location;f.location=c==a.PRE_SUBJECT&&"<"==b?a.W...
FILE: app/src/main/assets/code_mirror/mode/octave/octave.js
function c (line 1) | function c(a){return new RegExp("^(("+a.join(")|(")+"))\\b")}
function e (line 1) | function e(a,b){if(!a.sol()&&"'"===a.peek())return a.next(),b.tokenize=d...
function f (line 1) | function f(a,b){if(a.match(/^.*%}/))return b.tokenize=d,"comment";a.skip...
function d (line 2) | function d(a,b){if(a.eatSpace())return null;if(a.match("%{"))return b.to...
FILE: app/src/main/assets/code_mirror/mode/oz/oz.js
function e (line 1) | function e(a){return new RegExp("^(("+a.join(")|(")+"))\\b")}
function f (line 1) | function f(a,b){if(a.eatSpace())return null;if(a.match(/[{}]/))return"br...
function u (line 3) | function u(a,b){if(a.eatSpace())return null;a.match(/([A-Z][A-Za-z0-9_]*...
function v (line 3) | function v(a,b){if(a.eatSpace())return null;a.match(/([a-zA-Z][A-Za-z0-9...
function t (line 3) | function t(a,b){if(a.eatSpace())return null;
function k (line 4) | function k(a,b){for(var c=!1,d;d=a.next();){if("/"==d&&c){b.tokenize=f;b...
function x (line 4) | function x(a){return function(b,c){for(var d=!1,e,g=!1;null!=(e=b.next()...
FILE: app/src/main/assets/code_mirror/mode/pascal/pascal.js
function b (line 1) | function b(a,d){var c=a.next();if("#"==c&&d.startOfLine)return a.skipToE...
function h (line 2) | function h(a){return function(d,c){for(var b=!1,f,e=!1;null!=(f=d.next()...
function e (line 2) | function e(a,d){for(var c=!1,b;b=a.next();){if(")"==b&&c){d.tokenize=nul...
FILE: app/src/main/assets/code_mirror/mode/perl/perl.js
function g (line 1) | function g(d,e){return d.string.charAt(d.pos+(e||0))}
function q (line 1) | function q(d,e){if(e){var g=d.pos-e;return d.string.substr(0<=g?g:0,e)}r...
function p (line 1) | function p(d,e){var g=d.string.length,r=g-d.pos+1;return d.string.substr...
function e (line 1) | function e(d,e){e=d.pos+e;var g;0>=e?d.pos=
function d (line 2) | function d(a,c,d,e,b){c.chain=null;c.style=null;c.tail=null;c.tokenize=f...
function k (line 2) | function k(a,c,d){c.tokenize=function(a,b){a.string==d&&(b.tokenize=n);a...
function n (line 2) | function n(a,c){if(a.eatSpace())return null;
FILE: app/src/main/assets/code_mirror/mode/php/php.js
function h (line 1) | function h(c){var a={};c=c.split(" ");for(var d=0;d<c.length;++d)a[c[d]]...
function m (line 1) | function m(c,a,d){return 0==c.length?k(a):function(e,f){for(var b=c[0],l...
function k (line 2) | function k(c,a){return function(d,e){if(!1!==a&&d.match("${",!1)||d.matc...
FILE: app/src/main/assets/code_mirror/mode/pig/pig.js
function g (line 1) | function g(b,f){for(var c=!1,a;a=b.next();){if("/"==a&&c){f.tokenize=e;b...
function n (line 1) | function n(b){return function(a,c){for(var f=!1,d,g=!1;null!=(d=a.next()...
function e (line 2) | function e(b,a){var c=b.next();if('"'==c||"'"==c)return c=n(c),a.tokeniz...
function e (line 3) | function e(a){var d={};a=a.split(" ");for(var e=0;e<a.length;++e)d[a[e]]...
FILE: app/src/main/assets/code_mirror/mode/powershell/powershell.js
function e (line 1) | function e(b,a){a=a||{};var c=void 0!==a.prefix?a.prefix:"^";a=void 0!==...
function f (line 1) | function f(b,
function p (line 3) | function p(b,a){for(var c;null!=(c=b.peek());){if("$"===c)return a.token...
function u (line 3) | function u(b,a){return r(b,a,p)}
function v (line 3) | function v(b,
function w (line 4) | function w(b,a){return r(b,a,v)}
function r (line 4) | function r(b,a,c){if(b.match("$(")){var d=a.bracketNesting;a.returnStack...
function q (line 4) | function q(b,a){for(var c=!1,d;null!=(d=b.next());){if(c&&">"==d){a.toke...
function h (line 5) | function h(b,a){var c=b.peek();if(b.eat("{"))return a.tokenize=t,t(b,a);...
function t (line 5) | function t(b,a){for(var c;null!=(c=b.next());)if("}"===c){a.tokenize=f;b...
function g (line 5) | function g(b,a){var c=a.startQuote;if(b.sol()&&b.match(new RegExp(c+"@")...
FILE: app/src/main/assets/code_mirror/mode/protobuf/protobuf.js
function d (line 1) | function d(a){if(a.eatSpace())return null;if(a.match("//"))return a.skip...
FILE: app/src/main/assets/code_mirror/mode/pug/pug.js
function g (line 1) | function g(){this.javaScriptArguments=this.javaScriptLineExcludesColon=t...
function k (line 2) | function k(c,b){if(c.match("#{"))return b.isInterpolating=!0,b.interpola...
function l (line 2) | function l(c,b){if(c.match(/^:([\w\-]+)/)){var a;
function m (line 3) | function m(c,b){if(b.isAttrs){n[c.peek()]&&b.attrsNest.push(n[c.peek()])...
function h (line 4) | function h(c,b,a){a=d.mimeModes[a]||
function p (line 5) | function p(c,b,a){if(c.indentation()>b.indentOf||b.innerModeForLine&&!c....
FILE: app/src/main/assets/code_mirror/mode/puppet/puppet.js
function c (line 1) | function c(a,b){b=b.split(" ");for(var e=0;e<b.length;e++)g[b[e]]=a}
function k (line 1) | function k(a,b){for(var e,c,f=!1;!a.eol()&&(e=a.next())!=b.pending;){if(...
function h (line 1) | function h(a,
FILE: app/src/main/assets/code_mirror/mode/python/python.js
function n (line 1) | function n(f){return new RegExp("^(("+f.join(")|(")+"))\\b")}
function f (line 1) | function f(f){return f.scopes[f.scopes.length-1]}
function l (line 3) | function l(a,b){a.sol()&&(b.indent=a.indentation());if(a.sol()&&"py"==f(...
function w (line 3) | function w(a,b){if(a.eatSpace())return null;if("#"==a.peek())return a.sk...
function B (line 5) | function B(a){function b(b,f){for(;!b.eol();)if(b.eatWhile(/[^'"\\]/),b....
function u (line 6) | function u(a){for(;"py"!=f(a).type;)a.scopes.pop();a.scopes.push({offset...
function v (line 6) | function v(a,b){for(a=a.indentation();1<b.scopes.length&&f(b).offset>a;)...
FILE: app/src/main/assets/code_mirror/mode/q/q.js
function g (line 1) | function g(a,b){var d=a.sol(),c=a.next();f=null;if(d){if("/"==c)return(b...
function l (line 3) | function l(a,b){return a.skipToEnd(),/\/\s*$/.test(a.current())?(b.token...
function r (line 3) | function r(a,b){var d=a.sol()&&"\\"==a.peek();a.skipToEnd();d&&/^\\\s*$/...
function m (line 4) | function m(a){return a.skipToEnd(),"comment"}
function n (line 4) | function n(a,b){for(var d=!1,c,e=!1;c=a.next();){if('"'==c&&!d){e=!0;bre...
function h (line 4) | function h(a,b,d){a.context={prev:a.context,indent:a.indent,col:d,type:b}}
function k (line 4) | function k(a){a.indent=a.context.indent;a.context=a.context.prev}
FILE: app/src/main/assets/code_mirror/mode/r/r.js
function f (line 1) | function f(b){b=b.split(" ");for(var a={},c=0;c<b.length;++c)a[b[c]]=!0;...
function h (line 1) | function h(b,a){e=null;var c=b.next();if("#"==c)return b.skipToEnd(),"co...
function l (line 3) | function l(b){return function(a,c){if(a.eat("\\"))return c=a.next(),"x"=...
function g (line 4) | function g(b,a,c){b.ctx={type:a,indent:b.indent,align:null,column:c.colu...
FILE: app/src/main/assets/code_mirror/mode/rst/rst.js
function g (line 3) | function g(b){var a=Array.prototype.slice.call(arguments,1);return b.rep...
function d (line 3) | function d(b,a){var e=null;if(b.sol()&&b.match(H,!1))c(a,r,{mode:z,local...
function l (line 7) | function l(b,a){var e=null;if(a.ctx.phase==u||b.match(u,!1))switch(n(a))...
function x (line 9) | function x(b,a){return v(b,a,"comment")}
function y (line 9) | function y(b,a){return v(b,a,"meta")}
function v (line 9) | function v(b,a,e){if(b.eol()||
function r (line 10) | function r(b,a){if(a.ctx.mode&&a.ctx.local)return b.sol()?(b.eatSpace()|...
function f (line 10) | function f(b,a,c,d){return{phase:b,stage:a,mode:c,local:d}}
function c (line 10) | function c(b,a,c){b.tok=a;b.ctx=c||{}}
function n (line 10) | function n(b){return b.ctx.stage||0}
FILE: app/src/main/assets/code_mirror/mode/ruby/ruby.js
function n (line 1) | function n(a){for(var c={},b=0,d=a.length;b<d;++b)c[a[b]]=!0;return c}
function k (line 1) | function k(a,c,b){b.tokenize.push(a);return a(c,b)}
function m (line 1) | function m(a,c){if(a.sol()&&a.match("=begin")&&a.eol())return c.tokenize...
function q (line 5) | function q(a){a||(a=1);return function(c,b){if("}"==c.peek()){if(1==a)re...
function u (line 6) | function u(){var a=!1;return function(c,b){if(a)return b.tokenize.pop(),...
function l (line 6) | function l(a,c,b,d){return function(h,f){var e=!1,g;"read-quoted-paused"...
function t (line 7) | function t(a){return function(c,b){c.match(a)?b.tokenize.pop():c.skipToE...
function r (line 7) | function r(a,c){a.sol()&&a.match("=end")&&a.eol()&&c.tokenize.pop();a.sk...
FILE: app/src/main/assets/code_mirror/mode/sas/sas.js
function d (line 1) | function d(a,c,b){if(b){c=c.split(" ");for(var d=0;d<c.length;d++)e[c[d]...
function f (line 1) | function f(a,c){var b=a.next();if("/"===b&&a.eat("*"))return c.continueC...
FILE: app/src/main/assets/code_mirror/mode/sass/sass.js
function k (line 1) | function k(a,b){var c=a.peek();if(")"===c)return a.next(),b.tokenizer=g,...
function l (line 1) | function l(a,b){return function(c,d){if(c.sol()&&c.indentation()<=
function h (line 2) | function h(a,b){function c(d,f){var e=d.next(),m=d.peek(),h=d.string.cha...
function n (line 2) | function n(a){return function(b,c){return"}"===b.peek()?(b.next(),c.toke...
function e (line 2) | function e(a){0==a.indentCount&&
function g (line 3) | function g(a,b){var c=a.peek();if(a.match("/*"))return b.tokenizer=l(a.i...
FILE: app/src/main/assets/code_mirror/mode/scheme/scheme.js
function e (line 1) | function e(a){var c={};a=a.split(" ");for(var b=0;b<a.length;++b)c[a[b]]...
function g (line 1) | function g(a,c,b){this.indent=a;this.type=c;this.prev=b}
function l (line 1) | function l(a){return a.match(m)}
function n (line 1) | function n(a){return a.match(p)}
function h (line 1) | function h(a,c){!0===c&&a.backUp(1);return a.match(q)}
function r (line 2) | function r(a){return a.match(t)}
FILE: app/src/main/assets/code_mirror/mode/shell/shell.js
function d (line 1) | function d(a,b){b=b.split(" ");for(var e=0;e<b.length;e++)h[b[e]]=a}
function g (line 1) | function g(a,b){if(a.eatSpace())return null;var e=a.sol(),c=a.next();if(...
function k (line 2) | function k(a){return function(b,e){for(var c,d=!1,f=!1;null!=(c=b.next()...
FILE: app/src/main/assets/code_mirror/mode/sieve/sieve.js
function g (line 1) | function g(a){var b={};a=a.split(" ");for(var c=0;c<a.length;++c)b[a[c]]...
function e (line 1) | function e(a,b){var c=a.next();if("/"==c&&a.eat("*"))return b.tokenize=h...
function l (line 3) | function l(a,b){b._multiLineString=!0;if(!a.sol()){a.eatSpace();if("#"==...
function h (line 3) | function h(a,b){for(var c=!1,d;null!=(d=a.next());){if(c&&"/"==d){b.toke...
function k (line 3) | function k(a){return function(b,c){for(var d=!1,f;null!=(f=b.next())&&(f...
FILE: app/src/main/assets/code_mirror/mode/slim/slim.js
function J (line 1) | function J(a,b,c){var e=function(e,d){d.tokenize=b;return e.pos<a?(e.pos...
function t (line 1) | function t(a,b){a.stack=
function u (line 2) | function u(a){a.line==a.tokenize&&(a.line=a.stack.tokenize,a.stack=a.sta...
function K (line 2) | function K(a,b){return function(c,e){u(e);if(c.match(/^\\$/))return t(e,...
function L (line 2) | function L(a,b){return function(c,e){u(e);var d=b(c,e);c.eol()&&c.curren...
function v (line 2) | function v(a,b){return function(c,e){return c.peek()==
function f (line 3) | function f(a){var b,c=function(c,d){if(1==d.rubyState.tokenize.length&&!...
function n (line 3) | function n(a,b){return p.token(a,b.rubyState)}
function z (line 3) | function z(a,b){if(a.match(/^#\{/))return b.tokenize=v("}",b.tokenize),n...
function M (line 4) | function M(a){return function(b,c){var d;d=b.match(/^\\$/)?"lineContinua...
function A (line 4) | function A(a,b,c){b.stack={parent:b.stack,style:"html",indented:a.column...
function B (line 4) | function B(a,b){a.skipToEnd();return b.stack.style}
function l (line 4) | function l(a,b){if(a.eat(b.stack.endQuote))return b.line=b.stack.line,b....
function O (line 5) | function O(a,b){return a.match(/^==?/)?(b.tokenize=P,null):l(a,b)}
function P (line 5) | function P(a,b){var c=a.peek();return'"'==c||"'"==c?(b.tokenize=C(c,"str...
function Q (line 5) | function Q(a,b){if(a.match(/^#\{/))return b.tokenize=v("}",b.tokenize),n...
function R (line 6) | function R(a,b){b.stack.indented=a.column();b.line=b.tokenize=Q;return b...
function S (line 6) | function S(a,b){a.skipToEnd();return"slimDoctype"}
function T (line 6) | function T(a,b){if("<"==a.peek())return(b.tokenize=M(b.tokenize))(a,b);i...
function y (line 8) | function y(a,b){return b.startOfLine?T(a,b):x(a,b)}
function x (line 8) | function x(a,b){return a.eat("*")?(b.tokenize=f(E),null):a.match(V)?(b.t...
function E (line 8) | function E(a,b){return a.match(/^(<>?|><?)/)?(b.tokenize=q,null):q(a,b)}
function q (line 8) | function q(a,b){return a.match(W)?(b.tokenize=q,"slimId"):a.match(X)?(b....
function g (line 8) | function g(a,b){return a.match(/^([\[\{\(])/)?(b.stack={parent:b.stack,s...
function aa (line 9) | function aa(a,b){return a.match(/^==?/)?(b.tokenize=ba,null):g(a,b)}
function ba (line 9) | function ba(a,b){var c=a.peek();return'"'==c||"'"==c?(b.tokenize=C(c,"st...
function G (line 9) | function G(a,b){a.backUp(1);if(a.match(/^[^\s],(?=:)/))return b.tokenize=
function C (line 10) | function C(a,b,c,d,k){return function(e,f){u(f);var h=0==e.current().len...
function F (line 10) | function F(a,b){if(a.match(/^==?/))return b.tokenize=n,"slimSwitch";
FILE: app/src/main/assets/code_mirror/mode/smarty/smarty.js
function e (line 1) | function e(a,b){m=b;return a}
function h (line 1) | function h(a,b){for(var c=a.string,e=a.pos;;){var d=c.indexOf(g,e),e=d+g...
function q (line 2) | function q(a,b){if(a.match(n,!0))return 3===p?(b.depth--,0>=b.depth&&(b....
function v (line 4) | function v(a){return function(b,c){for(var d=null,e;!b.eol();){e=
function u (line 5) | function u(a,b){return function(c,d){for(;!c.eol();){if(c.match(b)){d.to...
FILE: app/src/main/assets/code_mirror/mode/solr/solr.js
function e (line 1) | function e(b){return function(a,c){for(var d=!1,e;null!=(e=a.next())&&(e...
function h (line 1) | function h(b){return function(a,c){var d="operator";"+"==b?d+=" positive...
function k (line 2) | function k(b){return function(a,c){for(var d=b;(b=a.peek())&&null!=b.mat...
function f (line 2) | function f(b,a){var c=b.next();'"'==c?a.tokenize=e(c):m.test(c)?a.tokeni...
FILE: app/src/main/assets/code_mirror/mode/soy/soy.js
function g (line 1) | function g(a){return a[a.length-1]}
function l (line 1) | function l(a,b,c){var d=
FILE: app/src/main/assets/code_mirror/mode/sparql/sparql.js
function h (line 1) | function h(a,b){var c=a.next();d=null;if("$"==c||"?"==c){if("?"==c&&a.ma...
function l (line 2) | function l(a){return function(b,c){for(var d=!1,e;null!=(e=b.next());){i...
function f (line 3) | function f(a,b,c){a.context={prev:a.context,indent:a.indent,col:c,type:b}}
function g (line 3) | function g(a){a.indent=a.context.indent;a.context=a.context.prev}
FILE: app/src/main/assets/code_mirror/mode/sql/sql.js
function k (line 1) | function k(b,f){var c=b.next();if(m[c]){var d=m[c](b,f);if(!1!==d)return...
function a (line 4) | function a(b){return function(a,c){for(var f=!1,e;null!=(e=a.next());){i...
function e (line 4) | function e(b,a){for(;;)if(b.skipTo("*")){if(b.next(),b.eat("/")){a.token...
function p (line 4) | function p(b,
function l (line 6) | function l(a){for(var e;null!=(e=a.next());)if("`"==
function h (line 7) | function h(a){a.eat("@")&&(a.match(/^session\./),a.match(/^local\./),a.m...
function k (line 7) | function k(a){return a.eat("N")?"atom":a.match(/^[a-zA-Z.#!?]/)?"variabl...
function a (line 7) | function a(a){var d={};a=a.split(" ");for(var e=
FILE: app/src/main/assets/code_mirror/mode/stex/stex.js
function e (line 1) | function e(a){a=a.cmdState;for(var b=a.length-1;0<=b;b--){var c=a[b];if(...
function h (line 1) | function h(a,b,c){return function(){this.name=a;this.bracketNo=0;this.st...
function k (line 2) | function k(a,b){a.f=b}
function g (line 2) | function g(a,b){var c;if(a.match(/^\\[a-zA-Z@]+/))return a=a.current().s...
function l (line 4) | function l(a,b,c){if(a.eatSpace())return null;if(a.match(c))return b.f=g...
function m (line 4) | function m(a,b){var c=a.peek(),d;
FILE: app/src/main/assets/code_mirror/mode/stylus/stylus.js
function E (line 1) | function E(f){f=f.sort(function(f,p){return p>f});return new RegExp("^((...
function f (line 1) | function f(f){for(var g={},p=0;p<f.length;++p)g[f[p]]=!0;return g}
function D (line 1) | function D(a,b){y=a.string.match(/(^[\w-]+\s*=\s*$)|(^\s*[\w-]+\s*=\s*[\...
function p (line 5) | function p(a,b){for(var c=!1,d;null!=(d=a.next());){if(c&&"/"==d){b.toke...
function F (line 5) | function F(a){return function(b,c){for(var d=!1,e;null!=(e=b.next());){i...
function V (line 5) | function V(a,b){a.next();a.match(/\s*[\"\')]/,!1)?b.tokenize=null:b.toke...
function G (line 5) | function G(a,b,c,d){this.type=a;this.indent=b;this.prev=
function d (line 6) | function d(a,b,c,d){d=0<=d?d:q;a.context=new G(c,b.indentation()+d,a.con...
function r (line 6) | function r(a,b){var c=a.context.indent-q;a.context=a.context.prev;b&&(a....
function A (line 6) | function A(a,b,c,d){for(d=d||1;0<d;d--)c.context=c.context.prev;return h...
function n (line 6) | function n(a){return a.toLowerCase()in Y}
function t (line 6) | function t(a){a=a.toLowerCase();return a in Z||a in aa}
function u (line 6) | function u(a){return a.toLowerCase()in ba}
function v (line 6) | function v(a){var b=a.toLowerCase(),
function H (line 7) | function H(a,b){return k(b)&&("{"==a||"]"==a||"hash"==a||"qualifier"==a)...
function w (line 7) | function w(a){return a.sol()||a.string.match(new RegExp("^\\s*"+a.curren...
function k (line 7) | function k(a){return a.eol()||a.match(/^\s*$/,!1)}
function l (line 7) | function l(a){var b=/^\s*[-_]*[a-z0-9]+[\w-]*/i;return(a="string"==typeo...
FILE: app/src/main/assets/code_mirror/mode/swift/swift.js
function g (line 1) | function g(a){for(var b={},c=0;c<a.length;c++)b[a[c]]=!0;return b}
function h (line 1) | function h(a,b,c){a.sol()&&(b.indented=a.indentation());if(a.eatSpace())...
function w (line 2) | function w(){var a=0;return function(b,
function m (line 3) | function m(a){return function(b,c){for(var d,e=!1;d=b.next();)if(e){if("...
function k (line 3) | function k(a,b){a.match(/^(?:[^*]|\*(?!\/))*/);a.match("*/")&&b.tokenize...
function x (line 3) | function x(a,b,c){this.prev=a;this.align=
function y (line 4) | function y(a,b){b=b.match(/^\s*($|\/[\/\*])/,!1)?null:b.column()+1;a.con...
function z (line 4) | function z(a){a.context&&(a.indented=a.context.indented,a.context=a.cont...
FILE: app/src/main/assets/code_mirror/mode/tcl/tcl.js
function e (line 1) | function e(a){var b={};a=a.split(" ");for(var d=0;d<a.length;++d)b[a[d]]...
function f (line 1) | function f(a,b,d){b.tokenize=d;return d(a,b)}
function g (line 1) | function g(a,b){var d=b.beforeParams;b.beforeParams=!1;var c=a.next();if...
function p (line 3) | function p(a){return function(b,d){for(var c=!1,e,f=!1;null!=(e=b.next()...
function m (line 3) | function m(a,b){for(var d=!1,c;c=a.next();){if("#"==c&&d){b.tokenize=g;b...
function n (line 3) | function n(a,b){for(var d=0,c;c=a.next();){if("#"==c&&2==d){b.tokenize=g...
FILE: app/src/main/assets/code_mirror/mode/textile/textile.js
function p (line 1) | function p(b,a,c){return"_"===c?b.eat("_")?g(b,a,"italic",/__/,2):g(b,a,...
function g (line 2) | function g(b,a,c,d,e){e=b.pos>e?b.string.charAt(b.pos-e-1):null;var g=b....
function h (line 3) | function h(b){var a=n(b);if(a)return a;a=[];b.layoutType&&a.push(k[b.lay...
function n (line 3) | function n(b){var a=b.layoutType;
function l (line 4) | function l(b,a){var c=n(b);if(c)return c;b=h(b);return a?b?b+" "+a:a:b}
function q (line 4) | function q(b){for(var a=[],c=1;c<arguments.length;++c)b[arguments[c]]&&a...
function r (line 4) | function r(b){var a=b.spanningLayout,c=b.layoutType,d;for(d in b)b.hasOw...
function e (line 4) | function e(b){return d.cache[b]||(d.cache[b]=d.createRe(b))}
FILE: app/src/main/assets/code_mirror/mode/tiddlywiki/tiddlywiki.js
function g (line 1) | function g(a,c,d){c.tokenize=d;return d(a,c)}
function e (line 1) | function e(a,c){var d=a.sol(),b=a.peek();c.block=!1;if(d&&/[<\/\*{}\-]/....
function f (line 4) | function f(a,c){for(var d=!1,b;b=a.next();){if("/"==b&&d){c.tokenize=e;b...
function z (line 4) | function z(a,c){for(var d=!1,b;b=a.next();){if("'"==b&&d){c.tokenize=e;b...
function h (line 4) | function h(a,c){var d=c.block;if(d&&a.current())return"comment";if(!d&&a...
function w (line 4) | function w(a,c){for(var d=!1,b;b=a.next();){if("/"==b&&d){c.tokenize=e;b...
function x (line 4) | function x(a,c){for(var d=
function y (line 5) | function y(a,c){for(var d=!1,b;b=a.next();){if("-"==b&&d){c.tokenize=e;b...
function A (line 5) | function A(a,c){if("<<"==a.current())return"macro";var d=a.next();if(!d)...
FILE: app/src/main/assets/code_mirror/mode/tiki/tiki.js
function e (line 1) | function e(a,b,c){return function(d,e){for(;!d.eol();){if(d.match(b)){e....
function r (line 1) | function r(a){return function(b,c){for(;!b.eol();)b.next();c.tokenize=g;...
function g (line 1) | function g(a,b){function c(c){b.tokenize=c;return c(a,
function n (line 3) | function n(a,b){var c=a.next(),d=a.peek();if("}"==c)return b.tokenize=g,...
function w (line 4) | function w(a){return function(b,c){for(;!b.eol();)if(b.next()==a){c.toke...
function v (line 4) | function v(){return function(a,b){for(;!a.eol();){var c=a.next(),d=a.pee...
function l (line 4) | function l(){for(var a=
function f (line 5) | function f(){l.apply(null,arguments);return!0}
function t (line 5) | function t(a,b){d.context={prev:d.context,pluginName:a,indent:d.indented...
function x (line 5) | function x(a){if("openPlugin"==a)return d.pluginName=p,f(q,y(d.startOfLi...
function y (line 6) | function y(a){return function(b){if("selfclosePlugin"==b||"endPlugin"==b...
function z (line 6) | function z(a){return function(b){a&&(k="error");return"endPlugin"==b?f()...
function q (line 6) | function q(a){return"keyword"==a?(k="attribute",f(q)):"equals"==a?f(A,q)...
function A (line 6) | function A(a){return"keyword"==a?(k="string",f()):"string"==a?f(u):l()}
function u (line 6) | function u(a){return"string"==a?f(u):l()}
FILE: app/src/main/assets/code_mirror/mode/tornado/tornado.js
function a (line 1) | function a(a,c){a.eatWhile(/[^\{]/);var b=a.next();if("{"==b&&(b=a.eat(/...
function e (line 1) | function e(b){"{"==
FILE: app/src/main/assets/code_mirror/mode/troff/troff.js
function b (line 1) | function b(a){if(a.eatSpace())return null;var b=a.sol(),d=a.next();if("\...
FILE: app/src/main/assets/code_mirror/mode/ttcn-cfg/ttcn-cfg.js
function g (line 1) | function g(e){var f={};e=e.split(" ");for(var h=0;h<e.length;++h)f[e[h]]...
function h (line 1) | function h(a,b){var c=a.next();if('"'==c||"'"==c)return b.tokenize=g(c),...
function g (line 2) | function g(a){return function(b,c){for(var e=!1,d,f=!1;null!=(d=b.next()...
function n (line 3) | function n(a,b,c,d,e){this.indented=a;this.column=b;this.type=c;this.ali...
function l (line 3) | function l(a,b,c){var d=a.indented;a.context&&"statement"==a.context.typ...
function k (line 3) | function k(a){var b=a.context.type;if(")"==b||"]"==b||"}"==b)a.indented=...
FILE: app/src/main/assets/code_mirror/mode/ttcn/ttcn.js
function a (line 1) | function a(a){var c={};a=a.split(" ");for(var g=0;g<a.length;++g)c[a[g]]...
function g (line 1) | function g(b,f){var d=b.next();if('"'==d||"'"==d)return f.tokenize=h(d),...
function h (line 4) | function h(b){return function(f,d){for(var c=!1,a,e=!1;null!=(a=f.next()...
function p (line 4) | function p(b,f){for(var d=!1,a;a=b.next();){if("/"==a&&d){f.tokenize=nul...
function r (line 4) | function r(b,a,d,c,e){this.indented=b;this.column=a;this.type=d;this.ali...
function l (line 4) | function l(b,a,d){var c=b.indented;b.context&&"statement"==b.context.typ...
function k (line 5) | function k(b){var a=b.context.type;if(")"==a||"]"==a||"}"==a)b.indented=...
function g (line 7) | function g(a){if(a)for(var c in a)a.hasOwnProperty(c)&&m.push(c)}
FILE: app/src/main/assets/code_mirror/mode/turtle/turtle.js
function h (line 1) | function h(a,b){var c=a.next();e=null;if("<"!=c||a.match(/^[\s\u00a0=]/,...
function l (line 2) | function l(a){return function(b,c){for(var d=!1,e;null!=(e=b.next());){i...
function f (line 2) | function f(a,b,c){a.context={prev:a.context,indent:a.indent,col:c,type:b}}
function g (line 2) | function g(a){a.indent=a.context.indent;a.context=a.context.prev}
FILE: app/src/main/assets/code_mirror/mode/twig/twig.js
function c (line 1) | function c(a,b){var c=a.peek();if(b.incomment)return a.skipTo("#}")?(a.e...
FILE: app/src/main/assets/code_mirror/mode/vb/vb.js
function d (line 1) | function d(a){return new RegExp("^(("+a.join(")|(")+"))\\b","i")}
function f (line 1) | function f(a,b){if(a.eatSpace())return null;if("'"===a.peek())return a.s...
function v (line 3) | function v(a){var b=1==a.length;return function(c,d){for(;!c.eol();){c.e...
FILE: app/src/main/assets/code_mirror/mode/vbscript/vbscript.js
function d (line 1) | function d(a){return new RegExp("^(("+a.join(")|(")+"))\\b","i")}
function h (line 1) | function h(a,b){if(a.eatSpace())return"space";if("'"===a.peek()||a.match...
function q (line 4) | function q(a){var b=1==a.length;return function(c,d){for(;!c.eol();){c.e...
FILE: app/src/main/assets/code_mirror/mode/velocity/velocity.js
function e (line 1) | function e(b){var a={};b=b.split(" ");for(var d=0;d<b.length;++d)a[b[d]]...
function f (line 1) | function f(b,a,d){a.tokenize=d;return d(b,a)}
function g (line 1) | function g(b,a){var d=a.beforeParams;a.beforeParams=!1;var c=b.next();if...
function k (line 4) | function k(b){return function(a,d){for(var c=!1,e,f=!1;null!=(e=a.next()...
function p (line 4) | function p(b,a){for(var d=!1,c;c=b.next();){if("#"==c&&d){a.tokenize=g;b...
function q (line 5) | function q(b,a){for(var d=0,c;c=b.next();){if("#"==c&&2==d){a.tokenize=g...
FILE: app/src/main/assets/code_mirror/mode/verilog/verilog.js
function t (line 1) | function t(b,a){var d=0;b=b.indentation();switch(a.tlvCurCtlFlowChar){ca...
function d (line 2) | function d(c){var a={};c=c.split(" ");for(var e=0;e<c.length;++e)a[c[e]]...
function g (line 2) | function g(c,a){var e=c.peek(),b;if(m[e]&&0!=(b=m[e](c,a))||m.tokenBase&...
function n (line 4) | function n(c){return function(a,b){for(var e=!1,v,d=!1;null!=(v=a.next()...
function f (line 4) | function f(c,a){for(var e=!1,b;b=c.next();){if("/"==b&&e){a.tokenize=g;b...
function u (line 4) | function u(c,a,b,d,f){this.indented=c;this.column=a;this.type=b;this.ali...
function q (line 4) | function q(c,a,b){a=new u(c.indented,a,b,null,c.context);return c.contex...
function w (line 4) | function w(c){var a=
function t (line 5) | function t(c,a){if(c==a)return!0;a=a.split(";");for(var b in a)if(c==a[b...
FILE: app/src/main/assets/code_mirror/mode/vhdl/vhdl.js
function l (line 1) | function l(e){var k={};e=e.split(",");for(var g=0;g<e.length;++g){var d=...
function q (line 1) | function q(e){e.eatWhile(/[\w\$_]/);return"meta"}
function g (line 1) | function g(a,b){var c=a.next();if(r[c]){var f=
function k (line 3) | function k(a){return function(b,c){for(var f=!1,d,e=!1;null!=(d=b.next()...
function w (line 3) | function w(a){return function(b,c){for(var f=!1,d,e=!1;null!=(d=b.next()...
function v (line 3) | function v(a,b,c,d,e){this.indented=a;this.column=b;this.type=c;this.ali...
function n (line 3) | function n(a,b,c){return a.context=new v(a.indented,b,c,null,a.context)}
function m (line 3) | function m(a){var b=
FILE: app/src/main/assets/code_mirror/mode/webidl/webidl.js
function d (line 1) | function d(a){return new RegExp("^(("+a.join(")|(")+"))\\b")}
function l (line 1) | function l(a,b){if(a.eatSpace())return null;if(b.inComment){if(a.match(m...
FILE: app/src/main/assets/code_mirror/mode/xml/xml.js
function h (line 3) | function h(a,c){function b(b){c.tokenize=b;return b(a,c)}var d=a.next();...
function u (line 4) | function u(a,c){var b=a.next();if(">"==b||"/"==b&&a.eat(">"))return c.to...
function F (line 5) | function F(a){var c=function(b,c){for(;!b.eol();)if(b.next()==a){c.token...
function r (line 5) | function r(a,c){return function(b,d){for(;!b.eol();){if(b.match(c)){d.to...
function t (line 5) | function t(a){return function(c,b){for(var d;null!=(d=c.next());){if("<"...
function G (line 6) | function G(a,c,b){this.prev=a.context;this.tagName=c;this.indent=a.inden...
function v (line 6) | function v(a){a.context&&(a.context=a.context.prev)}
function y (line 6) | function y(a,c){for(var b;a.context;){b=a.context.tagName;if(!e.contextG...
function m (line 7) | function m(a,c,b){return"openTag"==a?(b.tagStart=c.column(),z):"closeTag...
function z (line 7) | function z(a,c,b){if("word"==a)return b.tagName=c.current(),f="tag",k;f=...
function H (line 7) | function H(a,c,b){if("word"==a){a=c.current();b.context&&b.context.tagNa...
function w (line 7) | function w(a,c,b){if("endTag"!=a)return f="error",w;v(b);return m}
function A (line 7) | function A(a,
function k (line 8) | function k(a,c,b){if("word"==a)return f="attribute",I;if("endTag"==a||"s...
function I (line 8) | function I(a,c,b){if("equals"==a)return B;e.allowMissing||(f="error");re...
function B (line 8) | function B(a,c,b){if("string"==a)return C;if("word"==a&&e.allowUnquoted)...
function C (line 9) | function C(a,c,b){return"string"==a?C:k(a,c,b)}
FILE: app/src/main/assets/code_mirror/mode/xquery/xquery.js
function l (line 1) | function l(a,c,b){c.tokenize=b;return b(a,c)}
function f (line 1) | function f(a,c){var b=a.next(),d=!1,g;g='"'===a.current()?a.match(/^[^\"...
function k (line 4) | function k(a,c){for(var b=!1,d=!1,g=0,e;e=a.next();){if(")"==e&&b)if(0<g...
function q (line 4) | function q(a,c){return function(b,d){var g;if(m(d,"string")&&b.current()...
function x (line 5) | function x(a,c){var b=/[\w\$_-]/;if(a.eat('"')){for(;'"'!==a.next(););a....
function w (line 5) | function w(a,c){return function(b,d){b.eatSpace();if(c&&b.eat(">"))retur...
function r (line 6) | function r(a,c){var b=a.next();if("/"==b&&a.eat(">"))return n(c)&&h(c),m...
function t (line 6) | function t(a,c){for(var b;b=a.next();)if("-"==b&&a.match("->",!0))return...
function u (line 7) | function u(a,c){for(var b;b=a.next();)if("]"==b&&a.match("]",!0))return ...
function v (line 7) | function v(a,c){for(var b;b=a.next();)if("?"==b&&a.match(">",!0))return ...
function n (line 7) | function n(a){return m(a,"attribute")}
function m (line 7) | function m(a,c){return a.stack.length&&a.stack[a.stack.length-1].type==c}
function h (line 7) | function h(a){a.stack.pop();a.tokenize=a.stack.length&&a.stack[a.stack.l...
function a (line 7) | function a(a){return{type:a,style:"keyword"}}
FILE: app/src/main/assets/code_mirror/mode/yacas/yacas.js
function f (line 1) | function f(a,b){var c;c=a.next();if('"'===c)return b.tokenize=k,b.tokeni...
function k (line 3) | function k(a,b){for(var c,d=!1,e=!1;null!=(c=a.next());){if('"'===c&&!e)...
function l (line 3) | function l(a,b){for(var c,d;null!=(d=a.next());){if("*"===c&&"/"===d){b....
function g (line 3) | function g(a){var b=null;0<a.scopes.length&&(b=a.scopes[a.scopes.length-...
FILE: app/src/main/assets/intercept.js
function addTouchEvents (line 6) | function addTouchEvents(elements){
function touchStart (line 13) | function touchStart(event){
function touchEnd (line 18) | function touchEnd(event){
FILE: app/src/main/assets/polyfills.js
function r (line 4) | function r(t,o){return function(t,o){if("object"!=typeof t||null===t)thr...
function f (line 6) | function f(a,c){function b(a){if(!this||this.constructor!==b)return new ...
function v (line 6) | function v(a){this.add?a.forEach(this.add,this):a.forEach(function(a){th...
function d (line 6) | function d(a){this.has(a)&&(this._keys.splice(b,1),this._values.splice(b...
function m (line 6) | function m(a){return this.has(a)?this._values[b]:
function n (line 7) | function n(a,c){if(this.objectOnly&&c!==Object(c))throw new TypeError("I...
function p (line 7) | function p(a){return n.call(this,this._values,a)}
function q (line 7) | function q(a){return n.call(this,this._keys,a)}
function r (line 7) | function r(a,c){this.has(a)?this._values[b]=c:this._values[this._keys.pu...
function t (line 7) | function t(a){this.has(a)||this._values.push(a);return this}
function h (line 7) | function h(){(this._keys||0).length=this._values.length=
function z (line 8) | function z(){return k(this._itp,this._keys)}
function l (line 8) | function l(){return k(this._itp,this._values)}
function A (line 8) | function A(){return k(this._itp,this._keys,this._values)}
function B (line 8) | function B(){return k(this._itp,this._values,this._values)}
function k (line 8) | function k(a,c,b){var g=[0],e=!1;a.push(g);return{next:function(){var f,...
function x (line 8) | function x(){return this._values.length}
function u (line 8) | function u(a,c){for(var b=this.entries();;){var d=b.next();if(d.done)break;
function e (line 12) | function e(){}
function n (line 12) | function n(e){if(!(this instanceof n))throw new TypeError("Promises must...
function t (line 12) | function t(e,t){for(;3===e._state;)e=e._value;0!==e._state?(e._handled=!...
function o (line 12) | function o(e,t){try{if(t===e)throw new TypeError("A promise cannot be re...
function r (line 12) | function r(e,n){e._state=2,e._value=n,i(e)}
function i (line 12) | function i(e){2===e._state&&0===e._deferreds.length&&n._immediateFn(func...
function f (line 12) | function f(e,n){var t=!1;try{e(function(e){t||(t=!0,o(n,e))},function(e)...
function o (line 12) | function o(e,f){try{if(f&&("object"==typeof f||"function"==typeof f)){va...
FILE: app/src/main/assets/source-editor.js
function getExtension (line 1) | function getExtension(name) {
function updateWidth (line 12) | function updateWidth() {
function loadImage (line 21) | function loadImage(type, content) {
FILE: app/src/main/java/com/github/pockethub/android/ApplicationComponent.java
type ApplicationComponent (line 17) | @Singleton
method gistStore (line 29) | GistStore gistStore();
class Builder (line 31) | @Component.Builder
method application (line 34) | @BindsInstance
method build (line 37) | @Override
FILE: app/src/main/java/com/github/pockethub/android/GitHubModule.java
class GitHubModule (line 18) | @Module
method providesRepositoryCommitService (line 21) | @Provides
method providesUserService (line 27) | @Provides
method providesRepositoryCommentService (line 33) | @Provides
method providesGistService (line 39) | @Provides
method providesIssueService (line 45) | @Provides
method providesRepositoryService (line 51) | @Provides
method providesNotificationService (line 57) | @Provides
method providesSearchService (line 63) | @Provides
FILE: app/src/main/java/com/github/pockethub/android/Intents.java
class Intents (line 34) | public class Intents {
method repoFrom (line 189) | public static Repository repoFrom(Intent intent) {
class Builder (line 199) | public static class Builder {
method Builder (line 208) | public Builder(String actionSuffix) {
method repo (line 219) | public Builder repo(Repository repository) {
method issue (line 229) | public Builder issue(Issue issue) {
method gist (line 240) | public Builder gist(Gist gist) {
method gist (line 250) | public Builder gist(String gist) {
method gistFile (line 260) | public Builder gistFile(GistFile file) {
method user (line 270) | public Builder user(User user) {
method add (line 281) | public Builder add(String fieldName, String value) {
method add (line 293) | public Builder add(String fieldName, CharSequence[] values) {
method add (line 305) | public Builder add(String fieldName, int value) {
method add (line 317) | public Builder add(String fieldName, int[] values) {
method add (line 329) | public Builder add(String fieldName, boolean[] values) {
method add (line 341) | public Builder add(String fieldName, Serializable value) {
method add (line 354) | public Builder add(String fieldName, Parcelable value) {
method add (line 366) | public Builder add(String fieldName, ArrayList<? extends Parcelable>...
method toIntent (line 376) | public Intent toIntent() {
FILE: app/src/main/java/com/github/pockethub/android/PocketHub.java
class PocketHub (line 24) | public class PocketHub extends DaggerApplication {
method onCreate (line 28) | @Override
method applicationComponent (line 36) | public ApplicationComponent applicationComponent() {
method applicationInjector (line 40) | @Override
FILE: app/src/main/java/com/github/pockethub/android/PocketHubModule.java
class PocketHubModule (line 30) | @Module
method account (line 33) | @Provides
method cacheDir (line 40) | @Provides
FILE: app/src/main/java/com/github/pockethub/android/RequestCodes.java
type RequestCodes (line 21) | public interface RequestCodes {
FILE: app/src/main/java/com/github/pockethub/android/RequestReader.java
class RequestReader (line 32) | public class RequestReader {
method RequestReader (line 46) | public RequestReader(File file, int formatVersion) {
method read (line 56) | @SuppressWarnings("unchecked")
FILE: app/src/main/java/com/github/pockethub/android/RequestWriter.java
class RequestWriter (line 31) | public class RequestWriter {
method RequestWriter (line 45) | public RequestWriter(File file, int formatVersion) {
method createDirectory (line 50) | private void createDirectory(final File dir) {
method write (line 62) | public <V> V write(V request) {
FILE: app/src/main/java/com/github/pockethub/android/ResultCodes.java
type ResultCodes (line 23) | public interface ResultCodes {
FILE: app/src/main/java/com/github/pockethub/android/accounts/AccountAuthenticator.java
class AccountAuthenticator (line 36) | public class AccountAuthenticator extends AbstractAccountAuthenticator {
method AccountAuthenticator (line 40) | public AccountAuthenticator(final Context context) {
method addAccount (line 52) | @Override
method confirmCredentials (line 65) | @Override
method editProperties (line 72) | @Override
method getAuthToken (line 78) | @Override
method getAuthTokenLabel (line 85) | @Override
method hasFeatures (line 94) | @Override
method updateCredentials (line 103) | @Override
FILE: app/src/main/java/com/github/pockethub/android/accounts/AccountAuthenticatorService.java
class AccountAuthenticatorService (line 28) | public class AccountAuthenticatorService extends Service {
method onBind (line 32) | @Override
method getAuthenticator (line 38) | private AccountAuthenticator getAuthenticator() {
FILE: app/src/main/java/com/github/pockethub/android/accounts/AccountUtils.java
class AccountUtils (line 42) | public class AccountUtils {
class AuthenticatorConflictException (line 52) | private static class AuthenticatorConflictException extends IOException {
method hasAuthenticator (line 64) | public static boolean hasAuthenticator(final AccountManager manager) {
method isUser (line 90) | public static boolean isUser(final Context context, final User user) {
method getLogin (line 109) | public static String getLogin(final Context context) {
method getAccount (line 120) | public static Account getAccount(final Context context) {
method getAccounts (line 126) | private static Account[] getAccounts(final AccountManager manager)
method renameAccount (line 139) | public static boolean renameAccount(String newName, Account account,
method removeAccount (line 166) | private static void removeAccount(Account account, AccountManager acco...
method getPasswordAccessibleAccount (line 180) | public static Account getPasswordAccessibleAccount(final Context conte...
method getPasswordAccessibleAccounts (line 195) | private static Account[] getPasswordAccessibleAccounts(
method getAccount (line 224) | public static Account getAccount(final AccountManager manager,
method updateAccount (line 288) | public static boolean updateAccount(final Account account,
method showConflictMessage (line 330) | private static void showConflictMessage(final Activity activity) {
method isUnauthorized (line 346) | public static boolean isUnauthorized(final Exception e) {
FILE: app/src/main/java/com/github/pockethub/android/accounts/AccountsHelper.java
class AccountsHelper (line 24) | public class AccountsHelper {
method buildBundle (line 30) | public static Bundle buildBundle(String name, String mail, String avat...
method buildBundle (line 40) | public static Bundle buildBundle(String name, String mail, String avat...
method getUserAvatar (line 54) | public static String getUserAvatar(Context context, Account account) {
method getUserMail (line 59) | public static String getUserMail(Context context, Account account) {
method getUrl (line 64) | public static String getUrl(Context context, Account account) {
method getUserName (line 69) | public static String getUserName(Context context, Account account) {
method getUserToken (line 74) | public static String getUserToken(Context context, Account account) {
FILE: app/src/main/java/com/github/pockethub/android/accounts/LoginActivity.java
class LoginActivity (line 52) | public class LoginActivity extends AccountAuthenticatorAppCompatActivity {
method configureSyncFor (line 77) | public static void configureSyncFor(Account account) {
method onCreate (line 105) | @Override
method checkOauthConfig (line 124) | private void checkOauthConfig() {
method onNewIntent (line 130) | @Override
method onUserLoggedIn (line 137) | private void onUserLoggedIn(Uri uri) {
method openMain (line 165) | private void openMain() {
method openLoadingDialog (line 171) | private void openLoadingDialog() {
method handleLogin (line 178) | public void handleLogin() {
method openLoginInBrowser (line 182) | private void openLoginInBrowser() {
method onActivityResult (line 198) | @Override
method onOptionsItemSelected (line 206) | @Override
method endAuth (line 217) | private void endAuth(final String accessToken, final String scope) {
method finish (line 248) | @Override
method onCreateOptionsMenu (line 256) | @Override
FILE: app/src/main/java/com/github/pockethub/android/accounts/LoginWebViewActivity.java
class LoginWebViewActivity (line 40) | public class LoginWebViewActivity extends AppCompatActivity {
method onCreate (line 42) | @Override
FILE: app/src/main/java/com/github/pockethub/android/core/ItemStore.java
class ItemStore (line 26) | public abstract class ItemStore {
class ItemReference (line 28) | private static class ItemReference<V> extends WeakReference<V> {
method ItemReference (line 39) | public ItemReference(V item, Object id, ReferenceQueue<? super V> qu...
class ItemReferences (line 50) | protected static class ItemReferences<V> {
method ItemReferences (line 59) | public ItemReferences() {
method expungeEntries (line 64) | @SuppressWarnings("rawtypes")
method get (line 78) | public V get(final Object id) {
method put (line 90) | public void put(Object id, V item) {
FILE: app/src/main/java/com/github/pockethub/android/core/OnLoadListener.java
type OnLoadListener (line 23) | public interface OnLoadListener<V> {
method loaded (line 30) | void loaded(V data);
FILE: app/src/main/java/com/github/pockethub/android/core/code/FullTree.java
class FullTree (line 36) | public class FullTree {
class Entry (line 41) | public static class Entry implements Comparable<Entry> {
method Entry (line 58) | private Entry() {
method Entry (line 64) | private Entry(GitTreeEntry entry, Folder parent) {
method isRoot (line 70) | public boolean isRoot() {
method compareTo (line 74) | @Override
class Folder (line 83) | public static class Folder extends Entry {
method Folder (line 95) | private Folder() {
method Folder (line 99) | private Folder(GitTreeEntry entry, Folder parent) {
method addFile (line 103) | private void addFile(GitTreeEntry entry, String[] pathSegments, int ...
method addFolder (line 115) | private void addFolder(GitTreeEntry entry, String[] pathSegments, in...
method add (line 127) | private void add(final GitTreeEntry entry) {
method FullTree (line 185) | public FullTree(final GitTree tree, final GitReference reference) {
FILE: app/src/main/java/com/github/pockethub/android/core/code/RefreshTreeTask.java
class RefreshTreeTask (line 43) | public class RefreshTreeTask {
method RefreshTreeTask (line 59) | public RefreshTreeTask(final Context context, final Repository reposit...
method isValidRef (line 66) | private boolean isValidRef(GitReference ref) {
method getValidRef (line 71) | private Single<GitReference> getValidRef(GitService service, GitRefere...
method getBranch (line 91) | private Single<String> getBranch(GitReference ref) {
method refresh (line 106) | public Single<FullTree> refresh() {
class RefreshTreeModel (line 124) | private class RefreshTreeModel {
method RefreshTreeModel (line 128) | public RefreshTreeModel(GitCommit commit, GitReference ref) {
method getRef (line 133) | public GitReference getRef() {
method setRef (line 137) | public void setRef(GitReference ref) {
method getCommit (line 141) | public GitCommit getCommit() {
method setCommit (line 145) | public void setCommit(GitCommit commit) {
FILE: app/src/main/java/com/github/pockethub/android/core/commit/CommitStore.java
class CommitStore (line 39) | @Singleton
method CommitStore (line 50) | @Inject
method getCommit (line 61) | public Commit getCommit(final Repository repo, final String id) {
method addCommit (line 73) | public Commit addCommit(Repository repo, Commit commit) {
method refreshCommit (line 96) | public Single<Commit> refreshCommit(final Repository repo, final Strin...
FILE: app/src/main/java/com/github/pockethub/android/core/commit/CommitUriMatcher.java
class CommitUriMatcher (line 29) | public class CommitUriMatcher {
method getCommit (line 37) | public static CommitMatch getCommit(Uri uri) {
FILE: app/src/main/java/com/github/pockethub/android/core/commit/FullCommit.java
class FullCommit (line 34) | public class FullCommit extends ArrayList<GitComment> implements
method FullCommit (line 48) | public FullCommit(final Commit commit) {
method FullCommit (line 67) | public FullCommit(final Commit commit,
method add (line 104) | @Override
method getFiles (line 128) | public List<FullCommitFile> getFiles() {
method getCommit (line 135) | public Commit getCommit() {
FILE: app/src/main/java/com/github/pockethub/android/core/commit/FullCommitFile.java
class FullCommitFile (line 30) | public class FullCommitFile {
method FullCommitFile (line 41) | public FullCommitFile(final GitHubFile file) {
method get (line 51) | public List<GitComment> get(final int line) {
method add (line 62) | public FullCommitFile add(final GitComment comment) {
method getFile (line 78) | public GitHubFile getFile() {
FILE: app/src/main/java/com/github/pockethub/android/core/commit/RefreshCommitTask.java
class RefreshCommitTask (line 39) | @AutoFactory
method RefreshCommitTask (line 59) | public RefreshCommitTask(@Provided CommitStore store, @Provided HttpIm...
method refresh (line 75) | public Single<FullCommit> refresh() {
FILE: app/src/main/java/com/github/pockethub/android/core/gist/GistEventMatcher.java
class GistEventMatcher (line 27) | public class GistEventMatcher {
method getGist (line 35) | public static Gist getGist(final GitHubEvent event) {
FILE: app/src/main/java/com/github/pockethub/android/core/gist/GistStore.java
class GistStore (line 41) | @Singleton
method GistStore (line 52) | @Inject
method getGist (line 62) | public Gist getGist(String id) {
method sortFiles (line 72) | protected Map<String, GistFile> sortFiles(final Gist gist) {
method addGist (line 89) | public Gist addGist(Gist gist) {
method refreshGist (line 108) | public Single<Gist> refreshGist(String id) {
method editGist (line 119) | public Single<Gist> editGist(Gist gist) {
FILE: app/src/main/java/com/github/pockethub/android/core/gist/GistUriMatcher.java
class GistUriMatcher (line 30) | public class GistUriMatcher {
method getGist (line 40) | public static Gist getGist(final Uri uri) {
FILE: app/src/main/java/com/github/pockethub/android/core/gist/RefreshGistTask.java
class RefreshGistTask (line 44) | @AutoFactory
method RefreshGistTask (line 63) | public RefreshGistTask(@Provided GistStore store, @Provided HttpImageG...
method refresh (line 72) | public Single<FullGist> refresh() {
method getGistComments (line 81) | Single<List<GitHubComment>> getGistComments() {
FILE: app/src/main/java/com/github/pockethub/android/core/issue/IssueEventMatcher.java
class IssueEventMatcher (line 29) | public class IssueEventMatcher {
method getIssue (line 37) | public static Issue getIssue(GitHubEvent event) {
FILE: app/src/main/java/com/github/pockethub/android/core/issue/IssueFilter.java
class IssueFilter (line 32) | public class IssueFilter implements Parcelable, Cloneable, Comparator<La...
method IssueFilter (line 160) | public IssueFilter(final Repository repository, String id) {
method IssueFilter (line 168) | protected IssueFilter(Parcel in) {
method createFromParcel (line 181) | @Override
method newArray (line 186) | @Override
method setOpen (line 199) | public IssueFilter setOpen(final boolean open) {
method addLabel (line 210) | public IssueFilter addLabel(Label label) {
method setLabels (line 225) | public IssueFilter setLabels(Collection<Label> labels) {
method getLabels (line 242) | public List<Label> getLabels() {
method getRepository (line 249) | public Repository getRepository() {
method setMilestone (line 257) | public IssueFilter setMilestone(Milestone milestone) {
method getMilestone (line 265) | public Milestone getMilestone() {
method setAssignee (line 273) | public IssueFilter setAssignee(User assignee) {
method setDirection (line 282) | public IssueFilter setDirection(String direction) {
method setSortType (line 292) | public IssueFilter setSortType(String sortType) {
method getSortType (line 297) | public String getSortType() {
method getDirection (line 301) | public String getDirection() {
method isOpen (line 310) | public boolean isOpen() {
method getAssignee (line 317) | public User getAssignee() {
method toFilterMap (line 326) | public Map<String, Object> toFilterMap() {
method toDisplay (line 362) | public CharSequence toDisplay() {
method hashCode (line 401) | @Override
method isEqual (line 411) | private boolean isEqual(Object a, Object b) {
method isEqual (line 418) | private boolean isEqual(Milestone a, Milestone b) {
method isEqual (line 425) | private boolean isEqual(User a, User b) {
method isEqual (line 432) | private boolean isEqual(Repository a, Repository b) {
method equals (line 436) | @Override
method clone (line 454) | @Override
method compare (line 464) | @Override
method describeContents (line 469) | @Override
method writeToParcel (line 474) | @Override
method getId (line 486) | public String getId() {
FILE: app/src/main/java/com/github/pockethub/android/core/issue/IssueStore.java
class IssueStore (line 43) | @Singleton
method IssueStore (line 57) | @Inject
method getIssue (line 68) | public Issue getIssue(Repository repository, int number) {
method addIssue (line 79) | public Issue addIssue(Issue issue) {
method repoFromUrl (line 90) | private Repository repoFromUrl(String url) {
method addIssue (line 123) | public Issue addIssue(Repository repository, Issue issue) {
method refreshIssue (line 147) | public Single<Issue> refreshIssue(Repository repository, int issueNumb...
method editIssue (line 159) | public Single<Issue> editIssue(Repository repository, int issueNumber,...
method changeState (line 173) | public Single<Issue> changeState(Repository repository, int issueNumbe...
method addIssueOrThrow (line 191) | private Issue addIssueOrThrow(Repository repository, Response<Issue> r...
FILE: app/src/main/java/com/github/pockethub/android/core/issue/IssueUriMatcher.java
class IssueUriMatcher (line 31) | public class IssueUriMatcher {
method getIssue (line 40) | public static Issue getIssue(Uri uri) {
method getApiIssue (line 81) | public static Issue getApiIssue(String url) {
FILE: app/src/main/java/com/github/pockethub/android/core/issue/IssueUtils.java
class IssueUtils (line 26) | public class IssueUtils {
method isPullRequest (line 34) | public static boolean isPullRequest(final Issue issue) {
method toIssue (line 45) | public static Issue toIssue(final PullRequest pullRequest) {
FILE: app/src/main/java/com/github/pockethub/android/core/issue/RefreshIssueTask.java
class RefreshIssueTask (line 46) | @AutoFactory
method RefreshIssueTask (line 71) | public RefreshIssueTask(@Provided Context context,
method refresh (line 89) | public Single<FullIssue> refresh() {
method getAllComments (line 125) | private Single<List<GitHubComment>> getAllComments(String login, Strin...
method getAllEvents (line 138) | private Single<List<IssueEvent>> getAllEvents(String login, String nam...
method getPullRequest (line 148) | private Single<PullRequest> getPullRequest(String login, String name,
FILE: app/src/main/java/com/github/pockethub/android/core/ref/RefUtils.java
class RefUtils (line 26) | public class RefUtils {
method isBranch (line 42) | public static boolean isBranch(final GitReference ref) {
method isTag (line 57) | public static boolean isTag(final GitReference ref) {
method isTag (line 67) | public static boolean isTag(final String name) {
method getPath (line 77) | public static String getPath(final GitReference ref) {
method getName (line 95) | public static String getName(final GitReference ref) {
method getName (line 109) | public static String getName(final String name) {
method isValid (line 132) | public static boolean isValid(final GitReference ref) {
FILE: app/src/main/java/com/github/pockethub/android/core/repo/RepositoryEventMatcher.java
class RepositoryEventMatcher (line 34) | public class RepositoryEventMatcher {
method getRepository (line 42) | public static Repository getRepository(final GitHubEvent event) {
FILE: app/src/main/java/com/github/pockethub/android/core/repo/RepositoryUriMatcher.java
class RepositoryUriMatcher (line 28) | public class RepositoryUriMatcher {
method getRepository (line 36) | public static Repository getRepository(Uri uri) {
FILE: app/src/main/java/com/github/pockethub/android/core/user/UserComparator.java
class UserComparator (line 31) | public class UserComparator implements Comparator<User> {
method UserComparator (line 40) | @Inject
method compare (line 45) | @Override
FILE: app/src/main/java/com/github/pockethub/android/core/user/UserEventMatcher.java
class UserEventMatcher (line 26) | public class UserEventMatcher {
class UserPair (line 31) | public static class UserPair {
method UserPair (line 43) | private UserPair(final User from, final User to) {
method getUsers (line 55) | public static UserPair getUsers(final GitHubEvent event) {
FILE: app/src/main/java/com/github/pockethub/android/core/user/UserUriMatcher.java
class UserUriMatcher (line 28) | public class UserUriMatcher {
method getUser (line 36) | public static User getUser(Uri uri) {
FILE: app/src/main/java/com/github/pockethub/android/dagger/ActivityBuilder.java
type ActivityBuilder (line 31) | @Module
method mainActivity (line 34) | @ContributesAndroidInjector(modules = MainFragmentProvider.class)
method repositoryViewActivity (line 37) | @ContributesAndroidInjector(modules = RepositoryViewFragmentProvider.c...
method issuesViewActivity (line 40) | @ContributesAndroidInjector(modules = IssuesViewFragmentProvider.class)
method notificationActivity (line 43) | @ContributesAndroidInjector(modules = NotificationFragmentProvider.class)
method createGistActivity (line 46) | @ContributesAndroidInjector
method issueBrowseActivity (line 49) | @ContributesAndroidInjector(modules = IssueBrowseFragmentProvider.class)
method editIssuesFilterActivity (line 52) | @ContributesAndroidInjector
method editIssueActivity (line 55) | @ContributesAndroidInjector
method searchActivity (line 58) | @ContributesAndroidInjector(modules = SearchActivityFragmentProvider.c...
method filtersViewActivity (line 61) | @ContributesAndroidInjector(modules = FiltersViewFragmentProvider.class)
method gistsViewActivity (line 64) | @ContributesAndroidInjector(modules = GistsViewFragmentProvider.class)
method gistFilesViewActivity (line 67) | @ContributesAndroidInjector(modules = GistFilesViewFragmentProvider.cl...
method createGistCommentActivity (line 70) | @ContributesAndroidInjector(modules = CreateCommentFragmentProvider.cl...
method createIssueCommentActivity (line 73) | @ContributesAndroidInjector(modules = CreateCommentFragmentProvider.cl...
method createCommitCommentActivity (line 76) | @ContributesAndroidInjector(modules = CreateCommentFragmentProvider.cl...
method editGistCommentActivity (line 79) | @ContributesAndroidInjector(modules = CreateCommentFragmentProvider.cl...
method editIssueCommentActivity (line 82) | @ContributesAndroidInjector(modules = CreateCommentFragmentProvider.cl...
method repositoryContributorsActivity (line 85) | @ContributesAndroidInjector(modules = RepositoryContributorsFragmentPr...
method userViewActivity (line 88) | @ContributesAndroidInjector(modules = UserViewFragmentProvider.class)
method loginActivity (line 91) | @ContributesAndroidInjector
method uriLauncherActivity (line 94) | @ContributesAndroidInjector
method issueSearchActivity (line 97) | @ContributesAndroidInjector(modules = IssueSearchFragmentProvider.class)
method commitCompareViewActivity (line 100) | @ContributesAndroidInjector(modules = CommitCompareViewFragmentProvide...
method commitViewActivity (line 103) | @ContributesAndroidInjector(modules = CommitViewFragmentProvider.class)
method commitFileViewActivity (line 106) | @ContributesAndroidInjector
method branchFileViewActivity (line 109) | @ContributesAndroidInjector
method loginWebViewActivity (line 112) | @ContributesAndroidInjector
FILE: app/src/main/java/com/github/pockethub/android/dagger/CommitCompareViewFragmentProvider.java
type CommitCompareViewFragmentProvider (line 8) | @Module
method commitCompareListFragment (line 11) | @ContributesAndroidInjector
FILE: app/src/main/java/com/github/pockethub/android/dagger/CommitViewFragmentProvider.java
type CommitViewFragmentProvider (line 8) | @Module
method commitDiffListFragment (line 11) | @ContributesAndroidInjector
FILE: app/src/main/java/com/github/pockethub/android/dagger/CreateCommentFragmentProvider.java
type CreateCommentFragmentProvider (line 9) | @Module
method rawCommentFragment (line 12) | @ContributesAndroidInjector
method renderedCommentFragment (line 15) | @ContributesAndroidInjector
FILE: app/src/main/java/com/github/pockethub/android/dagger/DialogFragmentBuilder.java
type DialogFragmentBuilder (line 12) | @Module
method labelsDialogFragment (line 15) | @ContributesAndroidInjector
method assigneeDialogFragment (line 18) | @ContributesAndroidInjector
method milestoneDialogFragment (line 21) | @ContributesAndroidInjector
method refDialogFragment (line 24) | @ContributesAndroidInjector
method confirmDialogFragment (line 27) | @ContributesAndroidInjector
FILE: app/src/main/java/com/github/pockethub/android/dagger/FiltersViewFragmentProvider.java
type FiltersViewFragmentProvider (line 8) | @Module
method filterListFragment (line 11) | @ContributesAndroidInjector
FILE: app/src/main/java/com/github/pockethub/android/dagger/GistFilesViewFragmentProvider.java
type GistFilesViewFragmentProvider (line 8) | @Module
method gistFileFragment (line 11) | @ContributesAndroidInjector
FILE: app/src/main/java/com/github/pockethub/android/dagger/GistsPagerFragmentProvider.java
type GistsPagerFragmentProvider (line 10) | @Module
method myGistsFragment (line 13) | @ContributesAndroidInjector
method publicGistsFragment (line 16) | @ContributesAndroidInjector
method starredGistsFragment (line 19) | @ContributesAndroidInjector
FILE: app/src/main/java/com/github/pockethub/android/dagger/GistsViewFragmentProvider.java
type GistsViewFragmentProvider (line 8) | @Module
method gistFragment (line 11) | @ContributesAndroidInjector
FILE: app/src/main/java/com/github/pockethub/android/dagger/HomePagerFragmentProvider.java
type HomePagerFragmentProvider (line 13) | @Module
method userReceivedNewsFragment (line 16) | @ContributesAndroidInjector
method organizationNewsFragment (line 19) | @ContributesAndroidInjector
method repositoryListFragment (line 22) | @ContributesAndroidInjector
method myFollowersFragment (line 25) | @ContributesAndroidInjector
method myFollowingFragment (line 28) | @ContributesAndroidInjector
method membersFragment (line 31) | @ContributesAndroidInjector
FILE: app/src/main/java/com/github/pockethub/android/dagger/IssueBrowseFragmentProvider.java
type IssueBrowseFragmentProvider (line 8) | @Module
method issuesFragment (line 11) | @ContributesAndroidInjector
FILE: app/src/main/java/com/github/pockethub/android/dagger/IssueDashboardPagerFragmentProvider.java
type IssueDashboardPagerFragmentProvider (line 8) | @Module
method dashboardIssueFragment (line 11) | @ContributesAndroidInjector
FILE: app/src/main/java/com/github/pockethub/android/dagger/IssueSearchFragmentProvider.java
type IssueSearchFragmentProvider (line 8) | @Module
method searchIssueListFragment (line 11) | @ContributesAndroidInjector
FILE: app/src/main/java/com/github/pockethub/android/dagger/IssuesViewFragmentProvider.java
type IssuesViewFragmentProvider (line 8) | @Module
method issueFragment (line 11) | @ContributesAndroidInjector
FILE: app/src/main/java/com/github/pockethub/android/dagger/MainFragmentProvider.java
type MainFragmentProvider (line 16) | @Module
method homePagerFragment (line 19) | @ContributesAndroidInjector(modules = HomePagerFragmentProvider.class)
method gistsPagerFragment (line 22) | @ContributesAndroidInjector(modules = GistsPagerFragmentProvider.class)
method issueDashboardPagerFragment (line 25) | @ContributesAndroidInjector(modules = IssueDashboardPagerFragmentProvi...
method filterListFragment (line 28) | @ContributesAndroidInjector
FILE: app/src/main/java/com/github/pockethub/android/dagger/NotificationFragmentProvider.java
type NotificationFragmentProvider (line 8) | @Module
method notificationListFragment (line 11) | @ContributesAndroidInjector
FILE: app/src/main/java/com/github/pockethub/android/dagger/RepositoryContributorsFragmentProvider.java
type RepositoryContributorsFragmentProvider (line 8) | @Module
method repositoryContributorsFragment (line 11) | @ContributesAndroidInjector
FILE: app/src/main/java/com/github/pockethub/android/dagger/RepositoryViewFragmentProvider.java
type RepositoryViewFragmentProvider (line 12) | @Module
method repositoryReadmeFragment (line 15) | @ContributesAndroidInjector
method repositoryNewsFragment (line 18) | @ContributesAndroidInjector
method repositoryCodeFragment (line 21) | @ContributesAndroidInjector
method commitListFragment (line 24) | @ContributesAndroidInjector
method issuesFragment (line 27) | @ContributesAndroidInjector
FILE: app/src/main/java/com/github/pockethub/android/dagger/SearchActivityFragmentProvider.java
type SearchActivityFragmentProvider (line 9) | @Module
method searchRepositoryListFragment (line 12) | @ContributesAndroidInjector
method searchUserListFragment (line 15) | @ContributesAndroidInjector
FILE: app/src/main/java/com/github/pockethub/android/dagger/ServiceBuilder.java
type ServiceBuilder (line 8) | @Module
method provideSyncAdapterService (line 11) | @ContributesAndroidInjector
FILE: app/src/main/java/com/github/pockethub/android/dagger/UserViewFragmentProvider.java
type UserViewFragmentProvider (line 11) | @Module
method userCreatedNewsFragment (line 14) | @ContributesAndroidInjector
method userRepositoryListFragment (line 17) | @ContributesAndroidInjector
method userFollowersFragment (line 20) | @ContributesAndroidInjector
method userFollowingFragment (line 23) | @ContributesAndroidInjector
FILE: app/src/main/java/com/github/pockethub/android/markwon/AlignHandler.java
class AlignHandler (line 16) | public class AlignHandler extends SimpleTagHandler {
method getSpans (line 18) | @Nullable
method supportedTags (line 47) | @NonNull
FILE: app/src/main/java/com/github/pockethub/android/markwon/AsyncDrawableSchedulerPlugin.java
class AsyncDrawableSchedulerPlugin (line 11) | public class AsyncDrawableSchedulerPlugin extends AbstractMarkwonPlugin {
method beforeSetText (line 12) | @Override
method afterSetText (line 17) | @Override
method onLayoutChange (line 22) | private void onLayoutChange(View v, int left, int top, int right, int ...
FILE: app/src/main/java/com/github/pockethub/android/markwon/FontResolver.java
class FontResolver (line 8) | public class FontResolver extends SimpleAssetResolver {
method FontResolver (line 10) | public FontResolver(AssetManager assetManager) {
method resolveFont (line 14) | @Override
FILE: app/src/main/java/com/github/pockethub/android/markwon/GifAwareGlideStore.java
class GifAwareGlideStore (line 20) | class GifAwareGlideStore implements GlideImagesPlugin.GlideStore {
method GifAwareGlideStore (line 23) | public GifAwareGlideStore(Context context) {
method load (line 27) | @NonNull
method cancel (line 48) | @Override
FILE: app/src/main/java/com/github/pockethub/android/markwon/MarkwonUtils.java
class MarkwonUtils (line 29) | @PrismBundle(
method createMarkwon (line 34) | public static Markwon createMarkwon (Context context, String baseUrl) {
FILE: app/src/main/java/com/github/pockethub/android/markwon/SpanLinkPlugin.java
class SpanLinkPlugin (line 18) | public class SpanLinkPlugin extends AbstractMarkwonPlugin {
method SpanLinkPlugin (line 23) | public SpanLinkPlugin(String baseUrl) {
method configureSpansFactory (line 29) | @Override
FILE: app/src/main/java/com/github/pockethub/android/markwon/SvgDecoder.java
class SvgDecoder (line 14) | public class SvgDecoder implements ResourceDecoder<InputStream, SVG> {
method handles (line 16) | @Override
method decode (line 22) | public Resource<SVG> decode(
FILE: app/src/main/java/com/github/pockethub/android/markwon/SvgDrawableTranscoder.java
class SvgDrawableTranscoder (line 17) | public class SvgDrawableTranscoder implements ResourceTranscoder<SVG, Dr...
method transcode (line 18) | @Nullable
FILE: app/src/main/java/com/github/pockethub/android/markwon/SvgModule.java
class SvgModule (line 15) | @GlideModule
method registerComponents (line 17) | @Override
method isManifestParsingEnabled (line 24) | @Override
FILE: app/src/main/java/com/github/pockethub/android/persistence/AccountDataManager.java
class AccountDataManager (line 50) | public class AccountDataManager {
method AccountDataManager (line 78) | @Inject
method getContext (line 84) | public Context getContext() {
method read (line 94) | @SuppressWarnings("unchecked")
method write (line 115) | private AccountDataManager write(File file, Object data) {
method query (line 128) | protected Cursor query(SQLiteOpenHelper helper, String tables,
method query (line 143) | protected Cursor query(SQLiteOpenHelper helper, String tables,
method getOrgs (line 161) | public List<User> getOrgs(boolean forceReload) throws IOException {
method getRepos (line 178) | public List<Repository> getRepos(final User user, boolean forceReload)
method getIssueFilters (line 193) | public List<IssueFilter> getIssueFilters() {
method addIssueFilter (line 290) | public Single<IssueFilter> addIssueFilter(final IssueFilter filter) {
method removeIssueFilter (line 362) | public Single<IssueFilter> removeIssueFilter(IssueFilter filter) {
FILE: app/src/main/java/com/github/pockethub/android/persistence/OrganizationRepositoriesFactory.java
class OrganizationRepositoriesFactory (line 10) | public class OrganizationRepositoriesFactory {
method OrganizationRepositoriesFactory (line 18) | @Inject
method create (line 23) | public OrganizationRepositories create(User org) {
FILE: app/src/main/java/com/github/pockethub/android/persistence/PersistableResource.java
type PersistableResource (line 30) | public interface PersistableResource<E> {
method loadItems (line 38) | List<E> loadItems(Database database);
method store (line 46) | void store(Database database, List<E> items);
method request (line 55) | List<E> request() throws IOException;
FILE: app/src/main/java/com/github/pockethub/android/rx/AutoDisposeUtils.java
class AutoDisposeUtils (line 10) | public class AutoDisposeUtils {
method bindToLifecycle (line 12) | public static <T> AutoDisposeConverter<T> bindToLifecycle(LifecycleOwn...
method bindToLifecycle (line 16) | public static <T> AutoDisposeConverter<T> bindToLifecycle(Lifecycle li...
method bindToLifecycle (line 20) | public static <T> AutoDisposeConverter<T> bindToLifecycle(LifecycleOwn...
method bindToLifecycle (line 25) | public static <T> AutoDisposeConverter<T> bindToLifecycle(Lifecycle li...
FILE: app/src/main/java/com/github/pockethub/android/rx/RxProgress.java
class RxProgress (line 10) | public final class RxProgress {
method RxProgress (line 12) | private RxProgress() {
method bindToLifecycle (line 16) | public static <U> SingleTransformer<U, U> bindToLifecycle(Context cont...
method bindToLifecycle (line 20) | public static <U> SingleTransformer<U, U> bindToLifecycle(Context cont...
FILE: app/src/main/java/com/github/pockethub/android/sync/ContentProviderAdapter.java
class ContentProviderAdapter (line 26) | public class ContentProviderAdapter extends ContentProvider {
method delete (line 28) | @Override
method getType (line 33) | @Override
method insert (line 38) | @Override
method onCreate (line 43) | @Override
method query (line 48) | @Override
method update (line 54) | @Override
FILE: app/src/main/java/com/github/pockethub/android/sync/SyncAdapter.java
class SyncAdapter (line 31) | @Singleton
method SyncAdapter (line 44) | @Inject
method onPerformSync (line 49) | @Override
method onSyncCanceled (line 58) | @Override
method cancelCampaign (line 63) | private void cancelCampaign() {
FILE: app/src/main/java/com/github/pockethub/android/sync/SyncAdapterService.java
class SyncAdapterService (line 29) | public class SyncAdapterService extends DaggerService {
method onBind (line 34) | @Override
FILE: app/src/main/java/com/github/pockethub/android/sync/SyncCampaign.java
class SyncCampaign (line 33) | @AutoFactory
method SyncCampaign (line 53) | public SyncCampaign(@Provided DatabaseCache cache,
method run (line 63) | @Override
method cancel (line 97) | public void cancel() {
FILE: app/src/main/java/com/github/pockethub/android/ui/ConfirmDialogFragment.java
class ConfirmDialogFragment (line 36) | public class ConfirmDialogFragment extends DialogFragmentHelper implements
method show (line 49) | public static void show(final FragmentActivity activity,
method show (line 63) | public static void show(final FragmentActivity activity,
method onCreateDialog (line 73) | @Override
method onClick (line 88) | @Override
FILE: app/src/main/java/com/github/pockethub/android/ui/DialogResultListener.java
type DialogResultListener (line 24) | public interface DialogResultListener {
method onDialogResult (line 35) | void onDialogResult(int requestCode, int resultCode, Bundle arguments);
FILE: app/src/main/java/com/github/pockethub/android/ui/FragmentProvider.java
type FragmentProvider (line 23) | public interface FragmentProvider {
method getSelected (line 30) | Fragment getSelected();
FILE: app/src/main/java/com/github/pockethub/android/ui/SingleChoiceDialogFragment.java
class SingleChoiceDialogFragment (line 33) | public class SingleChoiceDialogFragment extends DialogFragmentHelper
method show (line 67) | protected static void show(final BaseActivity activity,
method onItemClick (line 77) | @Override
FILE: app/src/main/java/com/github/pockethub/android/ui/TextWatcherAdapter.java
class TextWatcherAdapter (line 24) | public class TextWatcherAdapter implements TextWatcher {
method afterTextChanged (line 26) | @Override
method beforeTextChanged (line 30) | @Override
method onTextChanged (line 35) | @Override
FILE: app/src/main/java/com/github/pockethub/android/ui/ViewPager.java
class ViewPager (line 26) | public class ViewPager extends androidx.viewpager.widget.ViewPager {
method ViewPager (line 31) | public ViewPager(final Context context) {
method ViewPager (line 39) | public ViewPager(final Context context, final AttributeSet attrs) {
method setItem (line 52) | public boolean setItem(final int item) {
method setItem (line 71) | public boolean setItem(final int item, final OnPageChangeListener list...
method scheduleSetItem (line 85) | public void scheduleSetItem(final int item,
method scheduleSetItem (line 95) | public void scheduleSetItem(final int item) {
method canScroll (line 99) | @Override
FILE: app/src/main/java/com/github/pockethub/android/ui/WebView.java
class WebView (line 25) | public class WebView extends android.webkit.WebView {
method WebView (line 35) | public WebView(final Context context, final AttributeSet attrs,
method WebView (line 45) | public WebView(final Context context, final AttributeSet attrs,
method WebView (line 54) | public WebView(final Context context, final AttributeSet attrs) {
method WebView (line 61) | public WebView(final Context context) {
method onInterceptTouchEvent (line 65) | @Override
method onTouchEvent (line 71) | @Override
method canScrollCodeHorizontally (line 80) | private boolean canScrollCodeHorizontally(final int direction) {
method startIntercept (line 94) | public void startIntercept() {
method stopIntercept (line 98) | public void stopIntercept() {
FILE: app/src/main/java/com/github/pockethub/android/ui/base/AccountAuthenticatorAppCompatActivity.java
class AccountAuthenticatorAppCompatActivity (line 39) | public abstract class AccountAuthenticatorAppCompatActivity extends Base...
method setAccountAuthenticatorResult (line 49) | public final void setAccountAuthenticatorResult(Bundle result) {
method onCreate (line 58) | @Override
method finish (line 73) | @Override
FILE: app/src/main/java/com/github/pockethub/android/ui/base/DialogFragmentHelper.java
class DialogFragmentHelper (line 35) | public abstract class DialogFragmentHelper extends DaggerAppCompatDialog...
method show (line 60) | protected static void show(FragmentActivity activity,
method createArguments (line 82) | protected static Bundle createArguments(final String title,
method onResult (line 96) | protected void onResult(final int resultCode) {
method getTitle (line 111) | protected String getTitle() {
method getMessage (line 120) | protected String getMessage() {
method onCancel (line 124) | @Override
method createDialogBuilder (line 134) | protected MaterialDialog.Builder createDialogBuilder() {
FILE: app/src/main/java/com/github/pockethub/android/ui/base/FragmentPagerAdapter.java
class FragmentPagerAdapter (line 31) | public abstract class FragmentPagerAdapter extends
method FragmentPagerAdapter (line 47) | public FragmentPagerAdapter(AppCompatActivity activity) {
method FragmentPagerAdapter (line 54) | public FragmentPagerAdapter(Fragment fragment) {
method isEmpty (line 61) | public boolean isEmpty() {
method clearAdapter (line 71) | public FragmentPagerAdapter clearAdapter() {
method getSelected (line 89) | @Override
method instantiateItem (line 94) | @Override
method getFragmentByPosition (line 115) | public Fragment getFragmentByPosition(int fragmentPosition) {
method setPrimaryItem (line 120) | @Override
method getFragmentTag (line 139) | private String getFragmentTag(int viewPagerId, int fragmentPosition) {
FILE: app/src/main/java/com/github/pockethub/android/ui/base/FragmentStatePagerAdapter.java
class FragmentStatePagerAdapter (line 26) | public abstract class FragmentStatePagerAdapter extends
method FragmentStatePagerAdapter (line 37) | public FragmentStatePagerAdapter(final AppCompatActivity activity) {
method FragmentStatePagerAdapter (line 46) | public FragmentStatePagerAdapter(final Fragment fragment) {
method getSelected (line 52) | @Override
method setPrimaryItem (line 57) | @Override
FILE: app/src/main/java/com/github/pockethub/android/ui/comment/CommentPreviewPagerAdapter.java
class CommentPreviewPagerAdapter (line 29) | public class CommentPreviewPagerAdapter extends FragmentPagerAdapter {
method CommentPreviewPagerAdapter (line 45) | public CommentPreviewPagerAdapter(AppCompatActivity activity, Reposito...
method getItem (line 51) | @Override
method getCount (line 66) | @Override
method getCommentText (line 76) | public String getCommentText() {
method setCommentText (line 89) | public void setCommentText(String comment) {
method setCurrentItem (line 102) | public CommentPreviewPagerAdapter setCurrentItem(int position) {
method getPageTitle (line 109) | @Override
FILE: app/src/main/java/com/github/pockethub/android/ui/comment/DeleteCommentListener.java
type DeleteCommentListener (line 23) | public interface DeleteCommentListener {
method onDeleteComment (line 30) | void onDeleteComment(GitHubComment comment);
FILE: app/src/main/java/com/github/pockethub/android/ui/comment/EditCommentListener.java
type EditCommentListener (line 23) | public interface EditCommentListener {
method onEditComment (line 30) | void onEditComment(GitHubComment comment);
FILE: app/src/main/java/com/github/pockethub/android/ui/commit/CommitCompareViewActivity.java
class CommitCompareViewActivity (line 41) | public class CommitCompareViewActivity extends BaseActivity {
method createIntent (line 51) | public static Intent createIntent(final Repository repository,
method onCreate (line 64) | @Override
method onCreateOptionsMenu (line 79) | @Override
method onOptionsItemSelected (line 88) | @Override
FILE: app/src/main/java/com/github/pockethub/android/ui/commit/CommitFileComparator.java
class CommitFileComparator (line 28) | public class CommitFileComparator implements Comparator<GitHubFile> {
method compare (line 30) | @Override
FILE: app/src/main/java/com/github/pockethub/android/ui/commit/CommitPagerAdapter.java
class CommitPagerAdapter (line 31) | public class CommitPagerAdapter extends FragmentStatePagerAdapter {
method CommitPagerAdapter (line 42) | public CommitPagerAdapter(AppCompatActivity activity,
method getItem (line 50) | @Override
method getCount (line 60) | @Override
FILE: app/src/main/java/com/github/pockethub/android/ui/commit/CreateCommentActivity.java
class CreateCommentActivity (line 47) | public class CreateCommentActivity extends
method createIntent (line 57) | public static Intent createIntent(Repository repository, String commit) {
method createIntent (line 70) | public static Intent createIntent(Repository repository, String commit,
method isLineComment (line 81) | private static boolean isLineComment(final String path, final int posi...
method onCreate (line 93) | @Override
method createComment (line 109) | @Override
method createAdapter (line 129) | @Override
FILE: app/src/main/java/com/github/pockethub/android/ui/commit/DiffStyler.java
class DiffStyler (line 35) | public class DiffStyler {
method DiffStyler (line 48) | public DiffStyler(final Resources resources) {
method nextLine (line 53) | private int nextLine(final String patch, final int start, final int le...
method updateColors (line 68) | public void updateColors(final CharSequence line, final TextView view) {
method setFiles (line 100) | public DiffStyler setFiles(final Collection<GitHubFile> files) {
method get (line 132) | public List<CharSequence> get(final String file) {
FILE: app/src/main/java/com/github/pockethub/android/ui/gist/CreateCommentActivity.java
class CreateCommentActivity (line 41) | public class CreateCommentActivity extends
method createIntent (line 50) | public static Intent createIntent(Gist gist) {
method onCreate (line 60) | @Override
method createComment (line 75) | @Override
FILE: app/src/main/java/com/github/pockethub/android/ui/gist/EditCommentActivity.java
class EditCommentActivity (line 45) | public class EditCommentActivity extends
method createIntent (line 56) | public static Intent createIntent(Gist gist, GitHubComment comment) {
method onCreate (line 70) | @Override
method createComment (line 85) | @Override
method editComment (line 98) | protected void editComment(CommentRequest commentRequest) {
method createAdapter (line 111) | @Override
FILE: app/src/main/java/com/github/pockethub/android/ui/gist/GistFilesPagerAdapter.java
class GistFilesPagerAdapter (line 33) | public class GistFilesPagerAdapter extends FragmentPagerAdapter {
method GistFilesPagerAdapter (line 41) | public GistFilesPagerAdapter(AppCompatActivity activity, Gist gist) {
method getPageTitle (line 52) | @Override
method getItem (line 57) | @Override
method getCount (line 67) | @Override
FILE: app/src/main/java/com/github/pockethub/android/ui/gist/GistQueriesPagerAdapter.java
class GistQueriesPagerAdapter (line 27) | public class GistQueriesPagerAdapter extends FragmentPagerAdapter {
method GistQueriesPagerAdapter (line 36) | public GistQueriesPagerAdapter(Fragment fragment) {
method getCount (line 42) | @Override
method getItem (line 47) | @Override
method getPageTitle (line 61) | @Override
FILE: app/src/main/java/com/github/pockethub/android/ui/gist/GistsPagerAdapter.java
class GistsPagerAdapter (line 31) | public class GistsPagerAdapter extends FragmentStatePagerAdapter {
method GistsPagerAdapter (line 41) | public GistsPagerAdapter(AppCompatActivity activity, String[] gistIds) {
method getItem (line 47) | @Override
method getCount (line 56) | @Override
method destroyItem (line 61) | @Override
method instantiateItem (line 68) | @Override
method onDialogResult (line 86) | public GistsPagerAdapter onDialogResult(int position, int requestCode,
FILE: app/src/main/java/com/github/pockethub/android/ui/gist/MyGistsFragment.java
class MyGistsFragment (line 37) | public class MyGistsFragment extends GistsFragment {
method onActivityResult (line 44) | @Override
method loadData (line 55) | @Override
FILE: app/src/main/java/com/github/pockethub/android/ui/gist/PublicGistsFragment.java
class PublicGistsFragment (line 29) | public class PublicGistsFragment extends GistsFragment {
method loadData (line 33) | @Override
FILE: app/src/main/java/com/github/pockethub/android/ui/gist/StarredGistsFragment.java
class StarredGistsFragment (line 29) | public class StarredGistsFragment extends GistsFragment {
method loadData (line 33) | @Override
FILE: app/src/main/java/com/github/pockethub/android/ui/issue/AssigneeDialog.java
class AssigneeDialog (line 44) | public class AssigneeDialog {
method AssigneeDialog (line 61) | public AssigneeDialog(final BaseActivity activity,
method show (line 82) | public void show(User selectedAssignee) {
FILE: app/src/main/java/com/github/pockethub/android/ui/issue/AssigneeDialogFragment.java
class AssigneeDialogFragment (line 41) | public class AssigneeDialogFragment extends SingleChoiceDialogFragment {
method getSelected (line 49) | public static User getSelected(Bundle arguments) {
method show (line 63) | public static void show(final BaseActivity activity,
method onCreateDialog (line 73) | @NonNull
method getChoices (line 92) | @SuppressWarnings("unchecked")
method onItemClick (line 97) | @Override
FILE: app/src/main/java/com/github/pockethub/android/ui/issue/CreateCommentActivity.java
class CreateCommentActivity (line 44) | public class CreateCommentActivity extends
method createIntent (line 55) | public static Intent createIntent(Repository repoId, int issueNumber,
method onCreate (line 68) | @Override
method createComment (line 81) | @Override
method createAdapter (line 95) | @Override
FILE: app/src/main/java/com/github/pockethub/android/ui/issue/EditAssigneeTask.java
class EditAssigneeTask (line 42) | @AutoFactory
method EditAssigneeTask (line 64) | public EditAssigneeTask(@Provided IssueStore store, final BaseActivity...
method prompt (line 82) | public EditAssigneeTask prompt(User assignee) {
method edit (line 93) | public EditAssigneeTask edit(User assignee) {
FILE: app/src/main/java/com/github/pockethub/android/ui/issue/EditCommentActivity.java
class EditCommentActivity (line 49) | public class EditCommentActivity extends
method createIntent (line 62) | public static Intent createIntent(Repository repoId, int issueNumber, ...
method onCreate (line 81) | @Override
method createComment (line 95) | @Override
method editComment (line 105) | protected void editComment(String commentText) {
method createAdapter (line 123) | @Override
FILE: app/src/main/java/com/github/pockethub/android/ui/issue/EditLabelsTask.java
class EditLabelsTask (line 44) | @AutoFactory
method EditLabelsTask (line 66) | public EditLabelsTask(@Provided IssueStore store, final BaseActivity a...
method prompt (line 85) | public EditLabelsTask prompt(List<Label> labels) {
method edit (line 96) | public EditLabelsTask edit(@NonNull List<Label> labels) {
FILE: app/src/main/java/com/github/pockethub/android/ui/issue/EditMilestoneTask.java
class EditMilestoneTask (line 39) | @AutoFactory
method EditMilestoneTask (line 61) | public EditMilestoneTask(@Provided IssueStore store, final BaseActivit...
method prompt (line 78) | public EditMilestoneTask prompt(Milestone milestone) {
method edit (line 89) | public EditMilestoneTask edit(Milestone milestone) {
FILE: app/src/main/java/com/github/pockethub/android/ui/issue/EditStateTask.java
class EditStateTask (line 40) | @AutoFactory
method EditStateTask (line 58) | public EditStateTask(@Provided IssueStore store, final BaseActivity ac...
method confirm (line 74) | public EditStateTask confirm(boolean close) {
method edit (line 92) | public EditStateTask edit(boolean close) {
FILE: app/src/main/java/com/github/pockethub/android/ui/issue/FiltersViewActivity.java
class FiltersViewActivity (line 41) | public class FiltersViewActivity extends BaseActivity implements DialogR...
method createIntent (line 50) | public static Intent createIntent() {
method onCreate (line 59) | @Override
method onDialogResult (line 72) | @Override
method onDestroy (line 87) | @Override
method onOptionsItemSelected (line 95) | @Override
FILE: app/src/main/java/com/github/pockethub/android/ui/issue/IssueBrowseActivity.java
class IssueBrowseActivity (line 38) | public class IssueBrowseActivity extends BaseActivity {
method createIntent (line 46) | public static Intent createIntent(IssueFilter filter) {
method onCreate (line 53) | @Override
method onOptionsItemSelected (line 66) | @Override
FILE: app/src/main/java/com/github/pockethub/android/ui/issue/IssueDashboardPagerAdapter.java
class IssueDashboardPagerAdapter (line 33) | public class IssueDashboardPagerAdapter extends FragmentStatePagerAdapter {
method IssueDashboardPagerAdapter (line 42) | public IssueDashboardPagerAdapter(final Fragment fragment) {
method getCount (line 48) | @Override
method getItem (line 53) | @Override
method getPageTitle (line 83) | @Override
FILE: app/src/main/java/com/github/pockethub/android/ui/issue/IssueSearchActivity.java
class IssueSearchActivity (line 42) | public class IssueSearchActivity extends BaseActivity {
method onCreateOptionsMenu (line 52) | @Override
method onOptionsItemSelected (line 67) | @Override
method onCreate (line 87) | @Override
method onNewIntent (line 108) | @Override
method handleIntent (line 115) | private void handleIntent(Intent intent) {
method search (line 121) | private void search(final String query) {
FILE: app/src/main/java/com/github/pockethub/android/ui/issue/IssueSearchSuggestionsProvider.java
class IssueSearchSuggestionsProvider (line 27) | public class IssueSearchSuggestionsProvider extends
method save (line 38) | public static void save(Context context, String query) {
method clear (line 47) | public static void clear(Context context) {
method suggestions (line 51) | private static SearchRecentSuggestions suggestions(Context context) {
method IssueSearchSuggestionsProvider (line 59) | public IssueSearchSuggestionsProvider() {
FILE: app/src/main/java/com/github/pockethub/android/ui/issue/IssuesPagerAdapter.java
class IssuesPagerAdapter (line 38) | public class IssuesPagerAdapter extends FragmentStatePagerAdapter {
method IssuesPagerAdapter (line 59) | public IssuesPagerAdapter(AppCompatActivity activity,
method IssuesPagerAdapter (line 77) | public IssuesPagerAdapter(AppCompatActivity activity,
method getItem (line 89) | @Override
method destroyItem (line 116) | @Override
method instantiateItem (line 123) | @Override
method getCount (line 132) | @Override
method onDialogResult (line 146) | public IssuesPagerAdapter onDialogResult(int position, int requestCode,
FILE: app/src/main/java/com/github/pockethub/android/ui/issue/LabelsDialog.java
class LabelsDialog (line 47) | public class LabelsDialog {
method LabelsDialog (line 64) | public LabelsDialog(final BaseActivity activity,
method show (line 85) | public void show(Collection<Label> selectedLabels) {
FILE: app/src/main/java/com/github/pockethub/android/ui/issue/LabelsDialogFragment.java
class LabelsDialogFragment (line 41) | public class LabelsDialogFragment extends DialogFragmentHelper implement...
method getSelected (line 63) | @SuppressWarnings("unchecked")
method show (line 78) | public static void show(final BaseActivity activity, final int request...
method onCreateDialog (line 87) | @NonNull
method getChoices (line 121) | @SuppressWarnings("unchecked")
method onResult (line 126) | @Override
method onItemClick (line 145) | @Override
FILE: app/src/main/java/com/github/pockethub/android/ui/issue/MilestoneDialog.java
class MilestoneDialog (line 44) | public class MilestoneDialog {
method MilestoneDialog (line 61) | public MilestoneDialog(final BaseActivity activity,
method show (line 83) | public void show(Milestone selectedMilestone) {
FILE: app/src/main/java/com/github/pockethub/android/ui/notification/NotificationPagerAdapter.java
class NotificationPagerAdapter (line 10) | class NotificationPagerAdapter extends FragmentPagerAdapter {
method NotificationPagerAdapter (line 14) | public NotificationPagerAdapter(AppCompatActivity activity) {
method getItem (line 19) | @Override
method getPageTitle (line 40) | @Override
method getCount (line 54) | @Override
FILE: app/src/main/java/com/github/pockethub/android/ui/notification/NotificationReadListener.java
type NotificationReadListener (line 13) | public interface NotificationReadListener {
method readNotification (line 15) | void readNotification(@NonNull NotificationThread thread);
method readNotifications (line 17) | void readNotifications(@Nullable Repository repository);
FILE: app/src/main/java/com/github/pockethub/android/ui/ref/RefDialog.java
class RefDialog (line 45) | public class RefDialog {
method RefDialog (line 62) | public RefDialog(final BaseActivity activity,
method show (line 84) | public void show(GitReference selectedRef) {
FILE: app/src/main/java/com/github/pockethub/android/ui/ref/RefDialogFragment.java
class RefDialogFragment (line 38) | public class RefDialogFragment extends SingleChoiceDialogFragment {
method getSelected (line 46) | public static GitReference getSelected(Bundle arguments) {
method show (line 60) | public static void show(final BaseActivity activity, final int request...
method onCreateDialog (line 67) | @NonNull
method getChoices (line 84) | @SuppressWarnings("unchecked")
method onItemClick (line 90) | @Override
FILE: app/src/main/java/com/github/pockethub/android/ui/repo/RecentRepositories.java
class RecentRepositories (line 37) | public class RecentRepositories implements Comparator<Repository>, Seria...
method getFile (line 48) | private static File getFile(final Context context, final User organiza...
method RecentRepositories (line 65) | public RecentRepositories(final Context context, final User organizati...
method load (line 70) | private void load() {
method trim (line 79) | private void trim() {
method add (line 93) | public RecentRepositories add(final Repository repo) {
method add (line 103) | public RecentRepositories add(final long id) {
method remove (line 119) | public RecentRepositories remove(final Repository repo) {
method remove (line 129) | public RecentRepositories remove(final long id) {
method saveAsync (line 142) | public RecentRepositories saveAsync() {
method save (line 161) | public RecentRepositories save() {
method contains (line 175) | public boolean contains(Repository repository) {
method contains (line 185) | public boolean contains(long id) {
method compare (line 192) | @Override
FILE: app/src/main/java/com/github/pockethub/android/ui/repo/RepositoryContributorsActivity.java
class RepositoryContributorsActivity (line 36) | public class RepositoryContributorsActivity extends BaseActivity {
method createIntent (line 44) | public static Intent createIntent(Repository repository) {
method onCreate (line 50) | @Override
method onOptionsItemSelected (line 65) | @Override
FILE: app/src/main/java/com/github/pockethub/android/ui/repo/RepositoryNewsFragment.java
class RepositoryNewsFragment (line 41) | public class RepositoryNewsFragment extends NewsFragment {
method onAttach (line 47) | @Override
method loadData (line 54) | @Override
method viewRepository (line 64) | @Override
method viewIssue (line 71) | @Override
method viewUser (line 76) | @Override
method viewUser (line 85) | @Override
FILE: app/src/main/java/com/github/pockethub/android/ui/repo/RepositoryPagerAdapter.java
class RepositoryPagerAdapter (line 32) | public class RepositoryPagerAdapter extends FragmentPagerAdapter {
method RepositoryPagerAdapter (line 50) | public RepositoryPagerAdapter(AppCompatActivity activity,
method getPageTitle (line 59) | @Override
method getItem (line 79) | @Override
method getCount (line 101) | @Override
method getItemCode (line 112) | public int getItemCode() {
method getItemCommits (line 119) | public int getItemCommits() {
method onBackPressed (line 128) | public boolean onBackPressed() {
method onDialogResult (line 141) | public RepositoryPagerAdapter onDialogResult(int position, int request...
FILE: app/src/main/java/com/github/pockethub/android/ui/search/RepositorySearchSuggestionsProvider.java
class RepositorySearchSuggestionsProvider (line 27) | public class RepositorySearchSuggestionsProvider extends
method save (line 38) | public static void save(Context context, String query) {
method clear (line 47) | public static void clear(Context context) {
method suggestions (line 51) | private static SearchRecentSuggestions suggestions(Context context) {
method RepositorySearchSuggestionsProvider (line 59) | public RepositorySearchSuggestionsProvider() {
FILE: app/src/main/java/com/github/pockethub/android/ui/search/SearchPagerAdapter.java
class SearchPagerAdapter (line 28) | public class SearchPagerAdapter extends FragmentPagerAdapter {
method SearchPagerAdapter (line 37) | public SearchPagerAdapter(AppCompatActivity activity) {
method getPageTitle (line 43) | @Override
method getItem (line 55) | @Override
method getCount (line 67) | @Override
FILE: app/src/main/java/com/github/pockethub/android/ui/user/MyFollowersFragment.java
class MyFollowersFragment (line 29) | public class MyFollowersFragment extends FollowersFragment {
method loadData (line 33) | @Override
FILE: app/src/main/java/com/github/pockethub/android/ui/user/MyFollowingFragment.java
class MyFollowingFragment (line 29) | public class MyFollowingFragment extends FollowingFragment {
method loadData (line 33) | @Override
FILE: app/src/main/java/com/github/pockethub/android/ui/user/OrganizationNewsFragment.java
class OrganizationNewsFragment (line 30) | public class OrganizationNewsFragment extends UserNewsFragment {
method loadData (line 34) | @Override
FILE: app/src/main/java/com/github/pockethub/android/ui/user/OrganizationSelectionListener.java
type OrganizationSelectionListener (line 23) | public interface OrganizationSelectionListener {
method onOrganizationSelected (line 30) | void onOrganizationSelected(User organization);
FILE: app/src/main/java/com/github/pockethub/android/ui/user/OrganizationSelectionProvider.java
type OrganizationSelectionProvider (line 23) | public interface OrganizationSelectionProvider {
method addListener (line 31) | User addListener(OrganizationSelectionListener listener);
method removeListener (line 39) | OrganizationSelectionProvider removeListener(
FILE: app/src/main/java/com/github/pockethub/android/ui/user/UriLauncherActivity.java
class UriLauncherActivity (line 51) | public class UriLauncherActivity extends Activity {
method launchUri (line 57) | static public void launchUri(Context context, Uri data) {
method convert (line 73) | static public Intent convert(final Intent intent) {
method onCreate (line 114) | @Override
method getIntentForURI (line 136) | static private Intent getIntentForURI(Uri data) {
method showParseError (line 167) | private void showParseError(String url) {
FILE: app/src/main/java/com/github/pockethub/android/ui/user/UserCreatedNewsFragment.java
class UserCreatedNewsFragment (line 29) | public class UserCreatedNewsFragment extends UserNewsFragment {
method loadData (line 33) | @Override
FILE: app/src/main/java/com/github/pockethub/android/ui/user/UserFollowersFragment.java
class UserFollowersFragment (line 33) | public class UserFollowersFragment extends FollowersFragment {
method onAttach (line 39) | @Override
method loadData (line 46) | @Override
FILE: app/src/main/java/com/github/pockethub/android/ui/user/UserFollowingFragment.java
class UserFollowingFragment (line 33) | public class UserFollowingFragment extends FollowingFragment {
method onAttach (line 39) | @Override
method loadData (line 46) | @Override
FILE: app/src/main/java/com/github/pockethub/android/ui/user/UserNewsFragment.java
class UserNewsFragment (line 30) | public abstract class UserNewsFragment extends NewsFragment implements
method onSaveInstanceState (line 38) | @Override
method onActivityCreated (line 47) | @Override
method onDetach (line 64) | @Override
method viewRepository (line 74) | @Override
method onOrganizationSelected (line 84) | @Override
method viewUser (line 94) | @Override
method viewUser (line 103) | @Override
FILE: app/src/main/java/com/github/pockethub/android/ui/user/UserPagerAdapter.java
class UserPagerAdapter (line 29) | public class UserPagerAdapter extends FragmentPagerAdapter {
method UserPagerAdapter (line 36) | public UserPagerAdapter(final AppCompatActivity activity) {
method getItem (line 42) | @Override
method getCount (line 58) | @Override
method getPageTitle (line 63) | @Override
FILE: app/src/main/java/com/github/pockethub/android/ui/user/UserReceivedNewsFragment.java
class UserReceivedNewsFragment (line 29) | public class UserReceivedNewsFragment extends UserNewsFragment {
method loadData (line 33) | @Override
FILE: app/src/main/java/com/github/pockethub/android/ui/view/OcticonTextView.java
class OcticonTextView (line 8) | public class OcticonTextView extends AppCompatTextView {
method OcticonTextView (line 192) | public OcticonTextView(Context context, AttributeSet attrs) {
method getOcticons (line 201) | private Typeface getOcticons() {
method getTypeface (line 211) | private static Typeface getTypeface(final Context context, final Strin...
FILE: app/src/main/java/com/github/pockethub/android/util/ConvertUtils.java
class ConvertUtils (line 22) | public class ConvertUtils {
method eventRepoToRepo (line 30) | public static Repository eventRepoToRepo(GitHubEvent.RepoIdentifier re...
FILE: app/src/main/java/com/github/pockethub/android/util/GravatarUtils.java
class GravatarUtils (line 31) | public class GravatarUtils {
method digest (line 58) | private static String digest(final String value) {
method getHash (line 92) | publ
Condensed preview — 732 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (2,819K chars).
[
{
"path": ".gitattributes",
"chars": 81,
"preview": "# Set default behaviour, in case users don't have core.autocrlf set.\n* text=auto\n"
},
{
"path": ".gitignore",
"chars": 1422,
"preview": "*/target\ntarget\ntmp\n*~\nbin\n*/test-output\ntemp-testng-customsuite.xml\n**pom.xml.releaseBackup\nrelease.properties\ngen\n*/se"
},
{
"path": ".travis.yml",
"chars": 552,
"preview": "language: android\nandroid:\n components:\n - tools\n - tools #Running this twice get's the latest build tools (https:"
},
{
"path": "CONTRIBUTING.md",
"chars": 2201,
"preview": "Contributing\n============\n\n## Reporting issues\n\n* IMPORTANT: Any issues reported regarding the old Play Store version of"
},
{
"path": "ISSUE_TEMPLATE.md",
"chars": 823,
"preview": "## If the issues at hand is a BUG, please follow this template. Otherwise feel free to ignore it.\n\n## Description\nA conc"
},
{
"path": "LICENSE",
"chars": 11358,
"preview": "\n Apache License\n Version 2.0, January 2004\n "
},
{
"path": "README.md",
"chars": 3793,
"preview": "# PocketHub [](https://travis-ci.org/pocketh"
},
{
"path": "app/build.gradle",
"chars": 8280,
"preview": "apply plugin: 'com.android.application'\napply plugin: 'kotlin-android'\napply plugin: 'kotlin-android-extensions'\napply p"
},
{
"path": "app/quality.gradle",
"chars": 448,
"preview": "apply plugin: 'checkstyle'\n\ncheck.dependsOn 'checkstyle'\n\ncheckstyle {\n toolVersion = '7.5.1'\n}\n\ntask checkstyle(type"
},
{
"path": "app/src/androidTest/AndroidManifest.xml",
"chars": 329,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\n package="
},
{
"path": "app/src/androidTest/java/com/github/pockethub/android/tests/NewsEventTextTest.java",
"chars": 9687,
"preview": "/*\n * Copyright (c) 2015 PocketHub\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not "
},
{
"path": "app/src/androidTest/java/com/github/pockethub/android/tests/ViewVisibiltyIdlingResource.kt",
"chars": 2468,
"preview": "package com.github.pockethub.android.tests\n\nimport android.app.Activity\nimport android.os.Handler\nimport android.view.Vi"
},
{
"path": "app/src/androidTest/java/com/github/pockethub/android/tests/commit/CommitUriMatcherTest.java",
"chars": 3274,
"preview": "/*\n * Copyright (c) 2015 PocketHub\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not "
},
{
"path": "app/src/androidTest/java/com/github/pockethub/android/tests/commit/CommitUtilsTest.java",
"chars": 7557,
"preview": "/*\n * Copyright (c) 2015 PocketHub\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not "
},
{
"path": "app/src/androidTest/java/com/github/pockethub/android/tests/commit/CreateCommentActivityTest.java",
"chars": 2637,
"preview": "/*\n * Copyright (c) 2015 PocketHub\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not "
},
{
"path": "app/src/androidTest/java/com/github/pockethub/android/tests/commit/DiffStylerTest.java",
"chars": 4874,
"preview": "/*\n * Copyright (c) 2015 PocketHub\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not "
},
{
"path": "app/src/androidTest/java/com/github/pockethub/android/tests/commit/FullCommitTest.java",
"chars": 4494,
"preview": "/*\n * Copyright (c) 2015 PocketHub\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not "
},
{
"path": "app/src/androidTest/java/com/github/pockethub/android/tests/gist/CreateCommentActivityTest.java",
"chars": 2632,
"preview": "/*\n * Copyright (c) 2015 PocketHub\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not "
},
{
"path": "app/src/androidTest/java/com/github/pockethub/android/tests/gist/CreateGistActivityTest.java",
"chars": 2510,
"preview": "/*\n * Copyright (c) 2015 PocketHub\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not "
},
{
"path": "app/src/androidTest/java/com/github/pockethub/android/tests/gist/GistFilesViewActivityTest.java",
"chars": 3050,
"preview": "/*\n * Copyright (c) 2015 PocketHub\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not "
},
{
"path": "app/src/androidTest/java/com/github/pockethub/android/tests/gist/GistStoreTest.java",
"chars": 1931,
"preview": "/*\n * Copyright (c) 2015 PocketHub\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not "
},
{
"path": "app/src/androidTest/java/com/github/pockethub/android/tests/gist/GistUriMatcherTest.java",
"chars": 2224,
"preview": "/*\n * Copyright (c) 2015 PocketHub\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not "
},
{
"path": "app/src/androidTest/java/com/github/pockethub/android/tests/issue/CreateCommentActivityTest.java",
"chars": 2634,
"preview": "/*\n * Copyright (c) 2015 PocketHub\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not "
},
{
"path": "app/src/androidTest/java/com/github/pockethub/android/tests/issue/EditIssueActivityTest.java",
"chars": 3085,
"preview": "/*\n * Copyright (c) 2015 PocketHub\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not "
},
{
"path": "app/src/androidTest/java/com/github/pockethub/android/tests/issue/EditIssuesFilterActivityTest.java",
"chars": 1547,
"preview": "/*\n * Copyright (c) 2015 PocketHub\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not "
},
{
"path": "app/src/androidTest/java/com/github/pockethub/android/tests/issue/IssueFilterTest.java",
"chars": 2642,
"preview": "/*\n * Copyright (c) 2015 PocketHub\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not "
},
{
"path": "app/src/androidTest/java/com/github/pockethub/android/tests/issue/IssueStoreTest.java",
"chars": 2007,
"preview": "/*\n * Copyright (c) 2015 PocketHub\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not "
},
{
"path": "app/src/androidTest/java/com/github/pockethub/android/tests/issue/IssueUriMatcherTest.java",
"chars": 3610,
"preview": "/*\n * Copyright (c) 2015 PocketHub\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not "
},
{
"path": "app/src/androidTest/java/com/github/pockethub/android/tests/ref/RefUtilsTest.java",
"chars": 4568,
"preview": "/*\n * Copyright (c) 2015 PocketHub\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not "
},
{
"path": "app/src/androidTest/java/com/github/pockethub/android/tests/repo/RecentRepositoriesTest.java",
"chars": 3526,
"preview": "/*\n * Copyright (c) 2015 PocketHub\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not "
},
{
"path": "app/src/androidTest/java/com/github/pockethub/android/tests/repo/RepositoryEventMatcherTest.java",
"chars": 2814,
"preview": "/*\n * Copyright (c) 2015 PocketHub\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not "
},
{
"path": "app/src/androidTest/java/com/github/pockethub/android/tests/repo/RepositoryUriMatcherTest.java",
"chars": 3030,
"preview": "/*\n * Copyright (c) 2015 PocketHub\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not "
},
{
"path": "app/src/androidTest/java/com/github/pockethub/android/tests/repo/SearchActivityTest.java",
"chars": 1362,
"preview": "/*\n * Copyright (c) 2015 PocketHub\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not "
},
{
"path": "app/src/androidTest/java/com/github/pockethub/android/tests/user/UserComparatorTest.java",
"chars": 2346,
"preview": "/*\n * Copyright (c) 2015 PocketHub\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not "
},
{
"path": "app/src/androidTest/java/com/github/pockethub/android/tests/user/UserUriMatcherTest.java",
"chars": 2705,
"preview": "/*\n * Copyright (c) 2015 PocketHub\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not "
},
{
"path": "app/src/androidTest/java/com/github/pockethub/android/tests/util/HtmlUtilsTest.java",
"chars": 6666,
"preview": "/*\n * Copyright (c) 2015 PocketHub\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not "
},
{
"path": "app/src/debug/res/values/strings.xml",
"chars": 137,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n <string name=\"app_name\" translatable=\"false\">PocketHub Debug</str"
},
{
"path": "app/src/main/AndroidManifest.xml",
"chars": 17112,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\n xmlns:to"
},
{
"path": "app/src/main/assets/code_mirror/LICENSE",
"chars": 1175,
"preview": "The MIT License (MIT)\n\nCopyright (c) 2016 Marijn Haverbeke <marijnh@gmail.com> and others\nCopyright (c) 2016 Michael Zho"
},
{
"path": "app/src/main/assets/code_mirror/VERSION",
"chars": 15,
"preview": "5.19.0-minified"
},
{
"path": "app/src/main/assets/code_mirror/addon/comment/comment.js",
"chars": 3934,
"preview": "'use strict';(function(h){\"object\"==typeof exports&&\"object\"==typeof module?h(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/addon/comment/continuecomment.js",
"chars": 1763,
"preview": "'use strict';(function(e){\"object\"==typeof exports&&\"object\"==typeof module?e(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/addon/dialog/dialog.css",
"chars": 398,
"preview": ".CodeMirror-dialog{position:absolute;left:0;right:0;background:inherit;z-index:15;padding:.1em .8em;overflow:hidden;colo"
},
{
"path": "app/src/main/assets/code_mirror/addon/dialog/dialog.js",
"chars": 2183,
"preview": "'use strict';(function(c){\"object\"==typeof exports&&\"object\"==typeof module?c(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/addon/display/autorefresh.js",
"chars": 857,
"preview": "'use strict';(function(c){\"object\"==typeof exports&&\"object\"==typeof module?c(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/addon/display/fullscreen.css",
"chars": 90,
"preview": ".CodeMirror-fullscreen{position:fixed;top:0;left:0;right:0;bottom:0;height:auto;z-index:9}"
},
{
"path": "app/src/main/assets/code_mirror/addon/display/fullscreen.js",
"chars": 838,
"preview": "'use strict';(function(c){\"object\"==typeof exports&&\"object\"==typeof module?c(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/addon/display/panel.js",
"chars": 2124,
"preview": "'use strict';(function(g){\"object\"==typeof exports&&\"object\"==typeof module?g(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/addon/display/placeholder.js",
"chars": 1195,
"preview": "'use strict';(function(d){\"object\"==typeof exports&&\"object\"==typeof module?d(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/addon/display/rulers.js",
"chars": 1155,
"preview": "'use strict';(function(c){\"object\"==typeof exports&&\"object\"==typeof module?c(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/addon/edit/closebrackets.js",
"chars": 3440,
"preview": "'use strict';(function(f){\"object\"==typeof exports&&\"object\"==typeof module?f(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/addon/edit/closetag.js",
"chars": 3181,
"preview": "'use strict';(function(e){\"object\"==typeof exports&&\"object\"==typeof module?e(require(\"../../lib/codemirror\"),require(\"."
},
{
"path": "app/src/main/assets/code_mirror/addon/edit/continuelist.js",
"chars": 856,
"preview": "'use strict';(function(d){\"object\"==typeof exports&&\"object\"==typeof module?d(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/addon/edit/matchbrackets.js",
"chars": 2425,
"preview": "'use strict';(function(e){\"object\"==typeof exports&&\"object\"==typeof module?e(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/addon/edit/matchtags.js",
"chars": 1318,
"preview": "'use strict';(function(d){\"object\"==typeof exports&&\"object\"==typeof module?d(require(\"../../lib/codemirror\"),require(\"."
},
{
"path": "app/src/main/assets/code_mirror/addon/edit/trailingspace.js",
"chars": 522,
"preview": "'use strict';(function(a){\"object\"==typeof exports&&\"object\"==typeof module?a(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/addon/fold/brace-fold.js",
"chars": 1884,
"preview": "'use strict';(function(d){\"object\"==typeof exports&&\"object\"==typeof module?d(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/addon/fold/comment-fold.js",
"chars": 1007,
"preview": "'use strict';(function(b){\"object\"==typeof exports&&\"object\"==typeof module?b(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/addon/fold/foldcode.js",
"chars": 2463,
"preview": "'use strict';(function(b){\"object\"==typeof exports&&\"object\"==typeof module?b(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/addon/fold/foldgutter.css",
"chars": 375,
"preview": ".CodeMirror-foldmarker{color:#00f;text-shadow:#b9f 1px 1px 2px,#b9f -1px -1px 2px,#b9f 1px -1px 2px,#b9f -1px 1px 2px;fo"
},
{
"path": "app/src/main/assets/code_mirror/addon/fold/foldgutter.js",
"chars": 3368,
"preview": "'use strict';var $jscomp={scope:{},findInternal:function(a,f,d){a instanceof String&&(a=String(a));for(var g=a.length,e="
},
{
"path": "app/src/main/assets/code_mirror/addon/fold/indent-fold.js",
"chars": 561,
"preview": "'use strict';(function(a){\"object\"==typeof exports&&\"object\"==typeof module?a(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/addon/fold/markdown-fold.js",
"chars": 702,
"preview": "'use strict';(function(a){\"object\"==typeof exports&&\"object\"==typeof module?a(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/addon/fold/xml-fold.js",
"chars": 3290,
"preview": "'use strict';(function(e){\"object\"==typeof exports&&\"object\"==typeof module?e(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/addon/hint/anyword-hint.js",
"chars": 790,
"preview": "'use strict';(function(b){\"object\"==typeof exports&&\"object\"==typeof module?b(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/addon/hint/css-hint.js",
"chars": 1194,
"preview": "'use strict';(function(a){\"object\"==typeof exports&&\"object\"==typeof module?a(require(\"../../lib/codemirror\"),require(\"."
},
{
"path": "app/src/main/assets/code_mirror/addon/hint/html-hint.js",
"chars": 7458,
"preview": "'use strict';(function(b){\"object\"==typeof exports&&\"object\"==typeof module?b(require(\"../../lib/codemirror\"),require(\"."
},
{
"path": "app/src/main/assets/code_mirror/addon/hint/javascript-hint.js",
"chars": 3024,
"preview": "'use strict';(function(h){\"object\"==typeof exports&&\"object\"==typeof module?h(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/addon/hint/show-hint.css",
"chars": 506,
"preview": ".CodeMirror-hints{position:absolute;z-index:10;overflow:hidden;list-style:none;margin:0;padding:2px;-webkit-box-shadow:2"
},
{
"path": "app/src/main/assets/code_mirror/addon/hint/show-hint.js",
"chars": 8671,
"preview": "'use strict';(function(f){\"object\"==typeof exports&&\"object\"==typeof module?f(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/addon/hint/sql-hint.js",
"chars": 3280,
"preview": "'use strict';(function(g){\"object\"==typeof exports&&\"object\"==typeof module?g(require(\"../../lib/codemirror\"),require(\"."
},
{
"path": "app/src/main/assets/code_mirror/addon/hint/xml-hint.js",
"chars": 2127,
"preview": "'use strict';(function(p){\"object\"==typeof exports&&\"object\"==typeof module?p(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/addon/lint/coffeescript-lint.js",
"chars": 588,
"preview": "'use strict';(function(a){\"object\"==typeof exports&&\"object\"==typeof module?a(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/addon/lint/css-lint.js",
"chars": 481,
"preview": "'use strict';(function(a){\"object\"==typeof exports&&\"object\"==typeof module?a(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/addon/lint/html-lint.js",
"chars": 712,
"preview": "'use strict';(function(a){\"object\"==typeof exports&&\"object\"==typeof module?a(require(\"../../lib/codemirror\"),require(\"h"
},
{
"path": "app/src/main/assets/code_mirror/addon/lint/javascript-lint.js",
"chars": 1534,
"preview": "'use strict';(function(e){\"object\"==typeof exports&&\"object\"==typeof module?e(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/addon/lint/json-lint.js",
"chars": 453,
"preview": "'use strict';(function(a){\"object\"==typeof exports&&\"object\"==typeof module?a(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/addon/lint/lint.css",
"chars": 2721,
"preview": ".CodeMirror-lint-markers{width:16px}.CodeMirror-lint-tooltip{background-color:#ffd;border:1px solid #000;border-radius:4"
},
{
"path": "app/src/main/assets/code_mirror/addon/lint/lint.js",
"chars": 3958,
"preview": "'use strict';(function(e){\"object\"==typeof exports&&\"object\"==typeof module?e(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/addon/lint/yaml-lint.js",
"chars": 397,
"preview": "'use strict';(function(a){\"object\"==typeof exports&&\"object\"==typeof module?a(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/addon/merge/merge.css",
"chars": 2821,
"preview": ".CodeMirror-merge{position:relative;border:1px solid #ddd;white-space:pre}.CodeMirror-merge,.CodeMirror-merge .CodeMirro"
},
{
"path": "app/src/main/assets/code_mirror/addon/merge/merge.js",
"chars": 14014,
"preview": "'use strict';(function(n){\"object\"==typeof exports&&\"object\"==typeof module?n(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/addon/mode/loadmode.js",
"chars": 1177,
"preview": "'use strict';(function(b){\"object\"==typeof exports&&\"object\"==typeof module?b(require(\"../../lib/codemirror\"),\"cjs\"):\"fu"
},
{
"path": "app/src/main/assets/code_mirror/addon/mode/multiplex.js",
"chars": 2168,
"preview": "'use strict';(function(e){\"object\"==typeof exports&&\"object\"==typeof module?e(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/addon/mode/multiplex_test.js",
"chars": 502,
"preview": "'use strict';(function(){CodeMirror.defineMode(\"markdown_with_stex\",function(){var a=CodeMirror.getMode({},\"stex\"),b=Cod"
},
{
"path": "app/src/main/assets/code_mirror/addon/mode/overlay.js",
"chars": 1269,
"preview": "'use strict';(function(c){\"object\"==typeof exports&&\"object\"==typeof module?c(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/addon/mode/simple.js",
"chars": 3947,
"preview": "'use strict';(function(k){\"object\"==typeof exports&&\"object\"==typeof module?k(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/addon/runmode/colorize.js",
"chars": 675,
"preview": "'use strict';(function(a){\"object\"==typeof exports&&\"object\"==typeof module?a(require(\"../../lib/codemirror\"),require(\"."
},
{
"path": "app/src/main/assets/code_mirror/addon/runmode/runmode-standalone.js",
"chars": 3066,
"preview": "'use strict';window.CodeMirror={};\n(function(){function k(a){this.pos=this.start=0;this.string=a;this.lineStart=0}k.prot"
},
{
"path": "app/src/main/assets/code_mirror/addon/runmode/runmode.js",
"chars": 1118,
"preview": "'use strict';(function(a){\"object\"==typeof exports&&\"object\"==typeof module?a(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/addon/runmode/runmode.node.js",
"chars": 4028,
"preview": "'use strict';function splitLines(a){return a.split(/\\r\\n?|\\n/)}var countColumn=function(a,b,d,c,e){null==b&&(b=a.search("
},
{
"path": "app/src/main/assets/code_mirror/addon/scroll/annotatescrollbar.js",
"chars": 2578,
"preview": "'use strict';(function(b){\"object\"==typeof exports&&\"object\"==typeof module?b(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/addon/scroll/scrollpastend.js",
"chars": 811,
"preview": "'use strict';(function(c){\"object\"==typeof exports&&\"object\"==typeof module?c(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/addon/scroll/simplescrollbars.css",
"chars": 1149,
"preview": ".CodeMirror-simplescroll-horizontal div,.CodeMirror-simplescroll-vertical div{position:absolute;background:#ccc;-moz-box"
},
{
"path": "app/src/main/assets/code_mirror/addon/scroll/simplescrollbars.js",
"chars": 3097,
"preview": "'use strict';(function(c){\"object\"==typeof exports&&\"object\"==typeof module?c(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/addon/search/jump-to-line.js",
"chars": 1093,
"preview": "'use strict';(function(e){\"object\"==typeof exports&&\"object\"==typeof module?e(require(\"../../lib/codemirror\"),require(\"."
},
{
"path": "app/src/main/assets/code_mirror/addon/search/match-highlighter.js",
"chars": 2641,
"preview": "'use strict';(function(f){\"object\"==typeof exports&&\"object\"==typeof module?f(require(\"../../lib/codemirror\"),require(\"."
},
{
"path": "app/src/main/assets/code_mirror/addon/search/matchesonscrollbar.css",
"chars": 160,
"preview": ".CodeMirror-search-match{background:gold;border-top:1px solid orange;border-bottom:1px solid orange;-moz-box-sizing:bord"
},
{
"path": "app/src/main/assets/code_mirror/addon/search/matchesonscrollbar.js",
"chars": 2138,
"preview": "'use strict';(function(d){\"object\"==typeof exports&&\"object\"==typeof module?d(require(\"../../lib/codemirror\"),require(\"."
},
{
"path": "app/src/main/assets/code_mirror/addon/search/search.js",
"chars": 6038,
"preview": "'use strict';var $jscomp={scope:{},findInternal:function(b,h,e){b instanceof String&&(b=String(b));for(var k=b.length,g="
},
{
"path": "app/src/main/assets/code_mirror/addon/search/searchcursor.js",
"chars": 4353,
"preview": "'use strict';var $jscomp={scope:{},findInternal:function(a,e,k){a instanceof String&&(a=String(a));for(var g=a.length,b="
},
{
"path": "app/src/main/assets/code_mirror/addon/selection/active-line.js",
"chars": 1317,
"preview": "'use strict';(function(d){\"object\"==typeof exports&&\"object\"==typeof module?d(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/addon/selection/mark-selection.js",
"chars": 2695,
"preview": "'use strict';var $jscomp={scope:{},findInternal:function(a,d,c){a instanceof String&&(a=String(a));for(var e=a.length,g="
},
{
"path": "app/src/main/assets/code_mirror/addon/selection/selection-pointer.js",
"chars": 1835,
"preview": "'use strict';(function(c){\"object\"==typeof exports&&\"object\"==typeof module?c(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/addon/tern/tern.css",
"chars": 1576,
"preview": ".CodeMirror-Tern-completion{padding-left:22px;position:relative;line-height:1.5}.CodeMirror-Tern-completion:before{posit"
},
{
"path": "app/src/main/assets/code_mirror/addon/tern/tern.js",
"chars": 11388,
"preview": "'use strict';(function(h){\"object\"==typeof exports&&\"object\"==typeof module?h(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/addon/tern/worker.js",
"chars": 773,
"preview": "'use strict';var server;this.onmessage=function(b){var a=b.data;switch(a.type){case \"init\":return startServer(a.defs,a.p"
},
{
"path": "app/src/main/assets/code_mirror/addon/wrap/hardwrap.js",
"chars": 2358,
"preview": "'use strict';(function(k){\"object\"==typeof exports&&\"object\"==typeof module?k(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/lib/codemirror.css",
"chars": 5453,
"preview": ".CodeMirror{font-family:monospace;height:300px;color:#000}.CodeMirror-lines{padding:4px 0}.CodeMirror pre{padding:0 4px}"
},
{
"path": "app/src/main/assets/code_mirror/lib/codemirror.js",
"chars": 155193,
"preview": "'use strict';var $jscomp={scope:{},findInternal:function(l,aa,I){l instanceof String&&(l=String(l));for(var S=l.length,b"
},
{
"path": "app/src/main/assets/code_mirror/mode/apl/apl.js",
"chars": 3079,
"preview": "'use strict';(function(d){\"object\"==typeof exports&&\"object\"==typeof module?d(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/mode/asciiarmor/asciiarmor.js",
"chars": 1160,
"preview": "'use strict';(function(c){\"object\"==typeof exports&&\"object\"==typeof module?c(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/mode/asn.1/asn.1.js",
"chars": 4218,
"preview": "'use strict';(function(f){\"object\"==typeof exports&&\"object\"==typeof module?f(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/mode/asterisk/asterisk.js",
"chars": 4027,
"preview": "'use strict';(function(c){\"object\"==typeof exports&&\"object\"==typeof module?c(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/mode/brainfuck/brainfuck.js",
"chars": 861,
"preview": "'use strict';(function(a){\"object\"==typeof exports&&\"object\"==typeof module?a(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/mode/clike/clike.js",
"chars": 18774,
"preview": "'use strict';(function(q){\"object\"==typeof exports&&\"object\"==typeof module?q(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/mode/clojure/clojure.js",
"chars": 9060,
"preview": "'use strict';(function(e){\"object\"==typeof exports&&\"object\"==typeof module?e(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/mode/cmake/cmake.js",
"chars": 1048,
"preview": "'use strict';(function(b){\"object\"==typeof exports&&\"object\"==typeof module?b(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/mode/cobol/cobol.js",
"chars": 6239,
"preview": "'use strict';(function(c){\"object\"==typeof exports&&\"object\"==typeof module?c(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/mode/coffeescript/coffeescript.js",
"chars": 4106,
"preview": "'use strict';(function(e){\"object\"==typeof exports&&\"object\"==typeof module?e(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/mode/commonlisp/commonlisp.js",
"chars": 2507,
"preview": "'use strict';(function(e){\"object\"==typeof exports&&\"object\"==typeof module?e(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/mode/crystal/crystal.js",
"chars": 4713,
"preview": "'use strict';(function(g){\"object\"==typeof exports&&\"object\"==typeof module?g(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/mode/css/css.js",
"chars": 22582,
"preview": "'use strict';(function(k){\"object\"==typeof exports&&\"object\"==typeof module?k(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/mode/cypher/cypher.js",
"chars": 3178,
"preview": "'use strict';(function(d){\"object\"==typeof exports&&\"object\"==typeof module?d(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/mode/d/d.js",
"chars": 4010,
"preview": "'use strict';(function(f){\"object\"==typeof exports&&\"object\"==typeof module?f(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/mode/dart/dart.js",
"chars": 2306,
"preview": "'use strict';(function(e){\"object\"==typeof exports&&\"object\"==typeof module?e(require(\"../../lib/codemirror\"),require(\"."
},
{
"path": "app/src/main/assets/code_mirror/mode/diff/diff.js",
"chars": 561,
"preview": "'use strict';(function(a){\"object\"==typeof exports&&\"object\"==typeof module?a(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/mode/django/django.js",
"chars": 4717,
"preview": "'use strict';(function(c){\"object\"==typeof exports&&\"object\"==typeof module?c(require(\"../../lib/codemirror\"),require(\"."
},
{
"path": "app/src/main/assets/code_mirror/mode/dockerfile/dockerfile.js",
"chars": 893,
"preview": "'use strict';(function(a){\"object\"==typeof exports&&\"object\"==typeof module?a(require(\"../../lib/codemirror\"),require(\"."
},
{
"path": "app/src/main/assets/code_mirror/mode/dtd/dtd.js",
"chars": 2350,
"preview": "'use strict';(function(e){\"object\"==typeof exports&&\"object\"==typeof module?e(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/mode/dylan/dylan.js",
"chars": 4171,
"preview": "'use strict';(function(f){\"object\"==typeof exports&&\"object\"==typeof module?f(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/mode/ebnf/ebnf.js",
"chars": 2465,
"preview": "'use strict';(function(c){\"object\"==typeof exports&&\"object\"==typeof module?c(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/mode/ecl/ecl.js",
"chars": 5363,
"preview": "'use strict';(function(e){\"object\"==typeof exports&&\"object\"==typeof module?e(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/mode/eiffel/eiffel.js",
"chars": 1910,
"preview": "'use strict';(function(d){\"object\"==typeof exports&&\"object\"==typeof module?d(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/mode/elm/elm.js",
"chars": 2121,
"preview": "'use strict';(function(d){\"object\"==typeof exports&&\"object\"==typeof module?d(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/mode/erlang/erlang.js",
"chars": 8141,
"preview": "'use strict';(function(k){\"object\"==typeof exports&&\"object\"==typeof module?k(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/mode/factor/factor.js",
"chars": 1439,
"preview": "'use strict';(function(a){\"object\"==typeof exports&&\"object\"==typeof module?a(require(\"../../lib/codemirror\"),require(\"."
},
{
"path": "app/src/main/assets/code_mirror/mode/fcl/fcl.js",
"chars": 2298,
"preview": "'use strict';(function(d){\"object\"==typeof exports&&\"object\"==typeof module?d(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/mode/forth/forth.js",
"chars": 2920,
"preview": "'use strict';(function(d){\"object\"==typeof exports&&\"object\"==typeof module?d(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/mode/fortran/fortran.js",
"chars": 4133,
"preview": "'use strict';(function(b){\"object\"==typeof exports&&\"object\"==typeof module?b(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/mode/gas/gas.js",
"chars": 4391,
"preview": "'use strict';(function(c){\"object\"==typeof exports&&\"object\"==typeof module?c(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/mode/gfm/gfm.js",
"chars": 2766,
"preview": "'use strict';(function(c){\"object\"==typeof exports&&\"object\"==typeof module?c(require(\"../../lib/codemirror\"),require(\"."
},
{
"path": "app/src/main/assets/code_mirror/mode/gherkin/gherkin.js",
"chars": 16217,
"preview": "'use strict';(function(c){\"object\"==typeof exports&&\"object\"==typeof module?c(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/mode/go/go.js",
"chars": 3061,
"preview": "'use strict';(function(f){\"object\"==typeof exports&&\"object\"==typeof module?f(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/mode/groovy/groovy.js",
"chars": 4068,
"preview": "'use strict';(function(f){\"object\"==typeof exports&&\"object\"==typeof module?f(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/mode/haml/haml.js",
"chars": 2279,
"preview": "'use strict';(function(d){\"object\"==typeof exports&&\"object\"==typeof module?d(require(\"../../lib/codemirror\"),require(\"."
},
{
"path": "app/src/main/assets/code_mirror/mode/handlebars/handlebars.js",
"chars": 1298,
"preview": "'use strict';(function(a){\"object\"==typeof exports&&\"object\"==typeof module?a(require(\"../../lib/codemirror\"),require(\"."
},
{
"path": "app/src/main/assets/code_mirror/mode/haskell/haskell.js",
"chars": 4516,
"preview": "'use strict';(function(e){\"object\"==typeof exports&&\"object\"==typeof module?e(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/mode/haskell-literate/haskell-literate.js",
"chars": 710,
"preview": "'use strict';(function(a){\"object\"==typeof exports&&\"object\"==typeof module?a(require(\"../../lib/codemirror\"),require(\"."
},
{
"path": "app/src/main/assets/code_mirror/mode/haxe/haxe.js",
"chars": 8276,
"preview": "'use strict';(function(p){\"object\"==typeof exports&&\"object\"==typeof module?p(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/mode/htmlembedded/htmlembedded.js",
"chars": 913,
"preview": "'use strict';(function(a){\"object\"==typeof exports&&\"object\"==typeof module?a(require(\"../../lib/codemirror\"),require(\"."
},
{
"path": "app/src/main/assets/code_mirror/mode/htmlmixed/htmlmixed.js",
"chars": 2834,
"preview": "'use strict';(function(d){\"object\"==typeof exports&&\"object\"==typeof module?d(require(\"../../lib/codemirror\"),require(\"."
},
{
"path": "app/src/main/assets/code_mirror/mode/http/http.js",
"chars": 1264,
"preview": "'use strict';(function(c){\"object\"==typeof exports&&\"object\"==typeof module?c(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/mode/idl/idl.js",
"chars": 10120,
"preview": "'use strict';(function(b){\"object\"==typeof exports&&\"object\"==typeof module?b(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/mode/javascript/javascript.js",
"chars": 13613,
"preview": "'use strict';(function(p){\"object\"==typeof exports&&\"object\"==typeof module?p(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/mode/jinja2/jinja2.js",
"chars": 1991,
"preview": "'use strict';(function(c){\"object\"==typeof exports&&\"object\"==typeof module?c(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/mode/jsx/jsx.js",
"chars": 2314,
"preview": "'use strict';(function(d){\"object\"==typeof exports&&\"object\"==typeof module?d(require(\"../../lib/codemirror\"),require(\"."
},
{
"path": "app/src/main/assets/code_mirror/mode/julia/julia.js",
"chars": 5135,
"preview": "'use strict';(function(f){\"object\"==typeof exports&&\"object\"==typeof module?f(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/mode/livescript/livescript.js",
"chars": 4754,
"preview": "'use strict';(function(b){\"object\"==typeof exports&&\"object\"==typeof module?b(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/mode/lua/lua.js",
"chars": 3295,
"preview": "'use strict';(function(d){\"object\"==typeof exports&&\"object\"==typeof module?d(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/mode/markdown/markdown.js",
"chars": 11404,
"preview": "'use strict';(function(h){\"object\"==typeof exports&&\"object\"==typeof module?h(require(\"../../lib/codemirror\"),require(\"."
},
{
"path": "app/src/main/assets/code_mirror/mode/mathematica/mathematica.js",
"chars": 2180,
"preview": "'use strict';(function(c){\"object\"==typeof exports&&\"object\"==typeof module?c(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/mode/mbox/mbox.js",
"chars": 1649,
"preview": "'use strict';(function(c){\"object\"==typeof exports&&\"object\"==typeof module?c(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/mode/meta.js",
"chars": 11673,
"preview": "'use strict';(function(b){\"object\"==typeof exports&&\"object\"==typeof module?b(require(\"../lib/codemirror\")):\"function\"=="
},
{
"path": "app/src/main/assets/code_mirror/mode/mirc/mirc.js",
"chars": 6167,
"preview": "'use strict';(function(e){\"object\"==typeof exports&&\"object\"==typeof module?e(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/mode/mllike/mllike.js",
"chars": 2934,
"preview": "'use strict';(function(b){\"object\"==typeof exports&&\"object\"==typeof module?b(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/mode/modelica/modelica.js",
"chars": 3298,
"preview": "'use strict';(function(g){\"object\"==typeof exports&&\"object\"==typeof module?g(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/mode/mscgen/mscgen.js",
"chars": 3389,
"preview": "'use strict';(function(c){\"object\"==typeof exports&&\"object\"==typeof module?c(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/mode/mumps/mumps.js",
"chars": 2135,
"preview": "'use strict';(function(d){\"object\"==typeof exports&&\"object\"==typeof module?d(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/mode/nginx/nginx.js",
"chars": 7642,
"preview": "'use strict';(function(d){\"object\"==typeof exports&&\"object\"==typeof module?d(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/mode/nsis/nsis.js",
"chars": 6592,
"preview": "'use strict';(function(a){\"object\"==typeof exports&&\"object\"==typeof module?a(require(\"../../lib/codemirror\"),require(\"."
},
{
"path": "app/src/main/assets/code_mirror/mode/ntriples/ntriples.js",
"chars": 2382,
"preview": "'use strict';(function(e){\"object\"==typeof exports&&\"object\"==typeof module?e(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/mode/octave/octave.js",
"chars": 2293,
"preview": "'use strict';(function(c){\"object\"==typeof exports&&\"object\"==typeof module?c(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/mode/oz/oz.js",
"chars": 3141,
"preview": "'use strict';(function(d){\"object\"==typeof exports&&\"object\"==typeof module?d(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/mode/pascal/pascal.js",
"chars": 1542,
"preview": "'use strict';(function(b){\"object\"==typeof exports&&\"object\"==typeof module?b(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/mode/pegjs/pegjs.js",
"chars": 1624,
"preview": "'use strict';(function(c){\"object\"==typeof exports&&\"object\"==typeof module?c(require(\"../../lib/codemirror\"),require(\"."
},
{
"path": "app/src/main/assets/code_mirror/mode/perl/perl.js",
"chars": 9912,
"preview": "'use strict';(function(k){\"object\"==typeof exports&&\"object\"==typeof module?k(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/mode/php/php.js",
"chars": 23691,
"preview": "'use strict';(function(g){\"object\"==typeof exports&&\"object\"==typeof module?g(require(\"../../lib/codemirror\"),require(\"."
},
{
"path": "app/src/main/assets/code_mirror/mode/pig/pig.js",
"chars": 4241,
"preview": "'use strict';(function(d){\"object\"==typeof exports&&\"object\"==typeof module?d(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/mode/powershell/powershell.js",
"chars": 7937,
"preview": "'use strict';(function(e){\"object\"==typeof exports&&\"object\"==typeof module?e(require(\"codemirror\")):\"function\"==typeof "
},
{
"path": "app/src/main/assets/code_mirror/mode/properties/properties.js",
"chars": 987,
"preview": "'use strict';(function(b){\"object\"==typeof exports&&\"object\"==typeof module?b(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/mode/protobuf/protobuf.js",
"chars": 1087,
"preview": "'use strict';(function(b){\"object\"==typeof exports&&\"object\"==typeof module?b(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/mode/pug/pug.js",
"chars": 7664,
"preview": "'use strict';(function(d){\"object\"==typeof exports&&\"object\"==typeof module?d(require(\"../../lib/codemirror\"),require(\"."
},
{
"path": "app/src/main/assets/code_mirror/mode/puppet/puppet.js",
"chars": 2850,
"preview": "'use strict';(function(c){\"object\"==typeof exports&&\"object\"==typeof module?c(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/mode/python/python.js",
"chars": 5435,
"preview": "'use strict';(function(g){\"object\"==typeof exports&&\"object\"==typeof module?g(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/mode/q/q.js",
"chars": 3866,
"preview": "'use strict';(function(e){\"object\"==typeof exports&&\"object\"==typeof module?e(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/mode/r/r.js",
"chars": 2846,
"preview": "'use strict';(function(d){\"object\"==typeof exports&&\"object\"==typeof module?d(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/mode/rpm/rpm.js",
"chars": 1952,
"preview": "'use strict';(function(b){\"object\"==typeof exports&&\"object\"==typeof module?b(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/mode/rst/rst.js",
"chars": 7105,
"preview": "'use strict';(function(k){\"object\"==typeof exports&&\"object\"==typeof module?k(require(\"../../lib/codemirror\"),require(\"."
},
{
"path": "app/src/main/assets/code_mirror/mode/ruby/ruby.js",
"chars": 5141,
"preview": "'use strict';(function(e){\"object\"==typeof exports&&\"object\"==typeof module?e(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/mode/rust/rust.js",
"chars": 2333,
"preview": "'use strict';(function(a){\"object\"==typeof exports&&\"object\"==typeof module?a(require(\"../../lib/codemirror\"),require(\"."
},
{
"path": "app/src/main/assets/code_mirror/mode/sas/sas.js",
"chars": 9801,
"preview": "'use strict';(function(f){\"object\"==typeof exports&&\"object\"==typeof module?f(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/mode/sass/sass.js",
"chars": 3796,
"preview": "'use strict';(function(f){\"object\"==typeof exports&&\"object\"==typeof module?f(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/mode/scheme/scheme.js",
"chars": 6011,
"preview": "'use strict';(function(e){\"object\"==typeof exports&&\"object\"==typeof module?e(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/mode/shell/shell.js",
"chars": 2024,
"preview": "'use strict';(function(d){\"object\"==typeof exports&&\"object\"==typeof module?d(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/mode/sieve/sieve.js",
"chars": 1869,
"preview": "'use strict';(function(d){\"object\"==typeof exports&&\"object\"==typeof module?d(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/mode/slim/slim.js",
"chars": 8428,
"preview": "'use strict';(function(d){\"object\"==typeof exports&&\"object\"==typeof module?d(require(\"../../lib/codemirror\"),require(\"."
},
{
"path": "app/src/main/assets/code_mirror/mode/smalltalk/smalltalk.js",
"chars": 2213,
"preview": "'use strict';(function(f){\"object\"==typeof exports&&\"object\"==typeof module?f(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/mode/smarty/smarty.js",
"chars": 2954,
"preview": "'use strict';(function(d){\"object\"==typeof exports&&\"object\"==typeof module?d(require(\"../../lib/codemirror\")):\"function"
},
{
"path": "app/src/main/assets/code_mirror/mode/solr/solr.js",
"chars": 1174,
"preview": "'use strict';(function(e){\"object\"==typeof exports&&\"object\"==typeof module?e(require(\"../../lib/codemirror\")):\"function"
}
]
// ... and 532 more files (download for full content)
About this extraction
This page contains the full source code of the pockethub/PocketHub GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 732 files (2.5 MB), approximately 709.3k tokens, and a symbol index with 2210 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.